实例化对象并在一行中调用方法?

dyn*_*mic 5 php oop

php 5.3

有没有办法做到这一点(例如在java中可行)

(new MyClass())->myMethod();
Run Code Online (Sandbox Code Playgroud)

我正在接受: Parse error: syntax error, unexpected T_OBJECT_OPERATOR in D.. on line 7

我真的需要在下一个PHP版本中实现RFC!

http://wiki.php.net/rfc/instance-method-call

有没有办法我们可以订阅它,以便它可以得到更多的关注?

Kin*_*nch 3

不,这是不可能的。有一个 RFC 可以解决这个问题

http://wiki.php.net/rfc/instance-method-call

但没有人知道它什么时候会进入用户空间。

Jacob提到了静态方法。还有其他或多或少有用的方法来实现相同的目的

function instanciate($className, $arg1 = null) {
    $args = func_get_args();
    array_shift($args);
    $c = new ReflectionClass($className);
    return $c->newInstanceArgs($c);
}
instanciate('Classname', 1, 2, 3)->doSomething();
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢临时变量(就像问题中一样)。

更新:我可以发誓那里有一个过去问题中临时变量的例子。然而,我的意思是这个

$x = new Class;
$x->method();
Run Code Online (Sandbox Code Playgroud)

其中$x是临时变量。