用字符串调用php方法

rix*_*501 7 php string methods object

我有两个对象.对象A和B.

A有一个返回B的方法.我想动态调用它,所以我使用一个字符串来调用B里面的方法,如下所示:

$method = 'getB()->someMethod';
Run Code Online (Sandbox Code Playgroud)

但如果这样做:

$a = new A();
$a->$method();
Run Code Online (Sandbox Code Playgroud)

它不起作用.有任何想法吗?

Fel*_*ing 18

你不能这样做.$method只能包含方法的名称A.阅读变量函数.你可以使用变量,例如

$method1 = 'getB';
$method2 = 'someMethod';

$a->$method1()->$method2();
Run Code Online (Sandbox Code Playgroud)

但可能最好重新考虑问题,考虑代码的另一个结构和/或查看设计模式.

问题是:你的最终目标是什么?

  • 你可以这样做.您可能还想查看[`__call`](http://www.php.net/manual/en/language.oop5.overloading.php#object.call).我不能告诉你什么是最好的方式.听起来你想做*远程过程调用(RPC)*.已经有一些库,所以你也可以看看这些. (2认同)