PHP 5.4新对象 - >通话方法

时间:2013-03-03 18:59:56

标签: php object methods

我在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}();

除非我弄错了并且无法完成,否则我似乎无法正常工作。谢谢

1 个答案:

答案 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()