這有點跟上一個前面的問題 - 但我已經提出了問題,並有「工作」與「不工作」的情況下更精確地縮小了範圍。PHP create_function實例變量 - 無法調用匿名函數:跟進
我的目標: 我有一個類MyClass
具有可變myFunction
一個實例。創建MyClass
對象(實例化)後,構造函數將實例變量myFunction
與調用create_function
(其中代碼和參數來自數據庫調用)的結果進行分配。
一旦MyClass
類型此對象被創建(並存儲爲另一個類的一個實例變量別處)我希望能夠調用由「無處不在」,我有MyClass
對象myFunction
(實例變量匿名函數)。
實驗案例 - 下面是我的高度簡化的測試代碼來說明什麼可行什麼與不(即當預期功能中斷)
class MyClass extends AnotherClass {
public $myFunction;
function __construct() {
$functionCode = 'echo "NyanNyanNyan";';
$this->myFunction();
/*Now the following code works as expected if put in here for testing*/
$anonFunc = $this->myFunction;
$anonFunc(); //This call works just fine (echos to page)!
/*And if i make this call, it works too! */
self::TestCallAnon();
}
public function TestCallAnon() {
$anonFunc2 = $this->myFunction;
$anonFunc2();
}
}
但是,如果我這樣做以下(在另一個文件中,它錯誤說未定義功能()在... Apache的錯誤日誌中。
//I'm using Yii framework, and this is getting the user
//objects instance variable 'myClass'.
$object = Yii::app()->user->myClass;
$object->TestCallAnon(); // **FAILS**
或
$func = $object->myFunction;
$func(); // ** ALSO FAILS **
此外,爲call_user_func
和call_user_func_array
電話的幾個變化不工作。
如果任何人能夠提供任何見解或幫助,那將是偉大的:)。
在此先感謝!
嘿,謝謝你的建議。其實我已經試過 'call_user_func(陣列($對象,$了funcName),陣列())',沒有運氣。它錯誤說「的行爲不具有一個名爲‘’的方法或關閉。」,這意味着$了funcName是空的我猜?但是,當我回聲線高於$了funcName,它給了我「lambda_3」。 – csjohn
這看起來並不像PHP的錯誤你會從'call_user_func'得到。 – Halcyon