第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP - 在每個方法調(diào)用時調(diào)用函數(shù)

PHP - 在每個方法調(diào)用時調(diào)用函數(shù)

PHP
慕碼人2483693 2023-07-21 18:27:39
我有幾個帶有多種方法的課程。我想用每個方法調(diào)用執(zhí)行一個函數(shù),而不是在每個方法中進(jìn)行相應(yīng)的調(diào)用。有沒有辦法自動執(zhí)行此操作?像方法偵聽器之類的東西?
查看完整描述

1 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊

您可以聲明所有方法并像這樣private使用魔術(shù)方法。__call


<?php


class MyClass

{

    private function doSomething($param1, $param2){ //your previously public method

       echo "do ".$param1." ".$param2;

    }

    private function doSomethingForbidden($param1, $param2){ //your previously public method

       echo "doSomethingForbidden";

    } 


    private function verifyPermission($methodName){

       return in_array($methodName, [

          "doSomething"

       ]);

    }


    public function __call($name, $arguments)

    {

        if($this->verifyPermission($name)){

          return call_user_func_array(array($this, $name), $arguments);

        }else{

          throw new \Exception("You can't do that !");

        }

    }

}


$nc = new MyClass();

$nc->doSomething("pet", "the dog");

//do pet the dog

$nc->doSomethingForbidden("feed", "the birds");

//Fatal error:  Uncaught Exception: You can't do that !


當(dāng)方法是私有的或不存在時,PHP 將自動將調(diào)用路由到__call存在的方法。call_user_func_array從那里,您可以做您想做的事情(檢查權(quán)限、記錄內(nèi)容等),并且由于您現(xiàn)在位于類的“內(nèi)部”,因此您可以使用原始參數(shù)自行調(diào)用私有方法。


您可以閱讀魔法方法的文檔來了解更多信息https://www.php.net/manual/en/language.oop5.overloading.php#object.call


查看完整回答
反對 回復(fù) 2023-07-21
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號