回覆列表
  • 1 # 未了情這

    第一種, 常規的php全域性函式 function test($echo){ echo $echo, "\n";} $param = array("

    www.zeroplace.cn

    "); call_user_func_array(test, $param);call_user_func_array("test", $param); 輸出:

    www.zeroplace.cn

    www.zeroplace.cn

    兩種呼叫方式都可以成功呼叫, 說明call_user_func_array呼叫常規php局函式時的第一個引數可以為函式本身,也可以為表示函式名的字串。 第二種, 類的靜態方法class TestC{ static function test($echo) { echo $echo, "\n"; }} $param = array("

    www.zeroplace.cn

    "); call_user_func_array(array(TestC, "test"), $param);call_user_func_array(array("TestC", "test"), $param); 輸出:

    www.zeroplace.cn

    www.zeroplace.cn

    這時傳第一個引數的時候傳了一個數據。陣列的第一個元素可以為類本身,也可以為類名的一個字串。第二個元素則是一個表示方法名的字串。 第三種,物件的方法class TestC{ protected $_a = "hello word"; function test($echo) { $this->_a = $echo; } function show() { echo $this->_a, "\n"; }} $param = array("

    www.zeroplace.cn

    ");$obj = new TestC();call_user_func_array(array($obj, "test"), $param);$obj->show();$obj->test("WEB應用開發");$obj->show(); 輸出:

    www.zeroplace.cn

    WEB應用開發 這裡是呼叫一個物件的方法。從test方法中設定物件的_a成員,然後透過show方法將它顯示出來,以驗證call_user_func_array呼叫方法時可以正確等到$this指標。這裡輸出的結果表明已經上面的方法是奏效的。其實回撥物件的方法還有一種更加簡單的方法,直接$obj->{$method}()就可以呼叫,只要{$method}是存在的。

  • 中秋節和大豐收的關聯?
  • 如果可以選擇,你還會結婚嗎?為什麼?