我有两个对象。对象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