我在書類中有一個方法display()
。PHP oop如何調用動態函數名稱
$name = 'display()';
$book = new Book('PHP Object-Oriented Solutions', 300);
$book->$name;
我如何可以調用使用$book->$name
我在書類中有一個方法display()
。PHP oop如何調用動態函數名稱
$name = 'display()';
$book = new Book('PHP Object-Oriented Solutions', 300);
$book->$name;
我如何可以調用使用$book->$name
你需要告訴你要執行的方法,而不是變量本身PHP顯示方法,但實際的代碼中:
$name = 'display';
$book = new Book('PHP Object-Oriented Solutions', 300);
$book->$name();
正如你所看到的,它將把$name
作爲一個屬性名稱,正確的如此...如果你有兩個一個屬性和一個名爲'display'的方法,那麼就沒有辦法disti兩者之間使用你所嘗試過的東西。
最乾淨的方式(IMO至少)是使用類似:
$name = 'display';
$book = new Book('PHP Object-Oriented Solutions', 300);
call_user_func([$book, $name]); // This looks cleaner and/or more obvious on first sight.
// call_user_func_array([$book, $name], $arrayOfArguments);
// And as @Narf suggested (and I agree cuz we move forward)
call_user_func([$book, $name], ... $arrayOfArguments);
是的,你可以傳遞參數給這個函數,將被傳遞給函數,但你必須後列出它們可調用數組。爲了避免這樣做(難以維護,而且並不總是你想要的),你可以使用call_user_func_array
,它接受一個參數數組作爲傳遞給可調用對象的第二個參數。
你嘗試'$書 - > $ name'?錯誤是什麼? – Dragos
我投票結束這個問題,因爲它是PHP手冊的副本。 http://php.net/manual/en/functions.variable-functions.php –
當我使用$書 - > $名稱它說:注意:未定義的屬性:Book :: $ display() –