我有兩個對象。對象A和B.用字符串調用php方法
A具有返回B.一個方法,我想等我使用一個字符串調用方法B的內部,像這樣動態調用此:
$method = 'getB()->someMethod';
但如果這樣做:
$a = new A();
$a->$method();
它不起作用。有任何想法嗎?
我有兩個對象。對象A和B.用字符串調用php方法
A具有返回B.一個方法,我想等我使用一個字符串調用方法B的內部,像這樣動態調用此:
$method = 'getB()->someMethod';
但如果這樣做:
$a = new A();
$a->$method();
它不起作用。有任何想法嗎?
你不能這樣做。 $method
只能包含方法名稱A
。閱讀關於variable functions。儘管你可能需要變量,例如
$method1 = 'getB';
$method2 = 'someMethod';
$a->$method1()->$method2();
但是,重新考慮問題,考慮代碼的另一個結構和/或查看設計模式可能會更好。
問題是:你的最終目標是什麼?
對不起,引發了一箇舊線程,但這個問題和答案適用於我。我正在考慮爲ajax調用創建一個php api。這是否是允許javascript將方法作爲字符串與對象進行交互的最佳方式? – Bill 2014-02-16 02:30:03
你可以這樣做。你可能還想看看['__call'](http://www.php.net/manual/en/language.oop5.overloading.php#object.call)。我不能告訴你什麼是最好的方法。這聽起來像你想做遠程過程調用(RPC)*。已經有一些庫,所以你也可以看看那些。 – 2014-02-16 02:35:38
我實際上喜歡關於php的東西 – ahnbizcad 2016-06-29 01:46:59
不應該先調用'$ a-> getB()'來獲得* B *嗎? – Gumbo 2010-10-15 15:03:13
爲什麼你的方法沒有'()'? – Shikiryu 2010-10-15 15:07:58