我在php 5.4中认为这是可能的
(new object())->method();
但是当对象和方法都存储在类变量中时我遇到了麻烦,我尝试了以下内容,
new $this->object($this->params)->$this->method();
new ($this->object($this->params))->$this->method();
new $this->object($this->params)->{$this->method}();
除非我弄错了并且无法完成,否则我似乎无法正常工作。谢谢
答案 0 :(得分:3)
基于此测试(http://codepad.viper-7.com/mcPvpG)(更新测试),如果将new object()
包装在自己的()
中,并将方法名称包装在{{1}中,它应该可以工作}}。因为表达式{}
返回对象,而不仅仅是对构造函数new object()
的调用,所以表达式需要包装为object()
。
但这是非常错综复杂的。如果你有机会重新考虑这个,我会这样做。
()
以下是使用public $object = 'ClassName';
public $method = 'method';
// Called as:
(new $this->object($this->params))->{$this->method}();
的示例:
ArrayIterator::valid()