Ivan Krechetov Ivan Krechetov - 10 months ago 57
PHP Question

Chaining a constructor with an object function call in PHP

Does anyone know if the following expression will be possible in the next version(s) of PHP?

(new A())->a(); // Causes a syntax error

I find very annoying that currently one must write 2 lines instead of 1:

$c = new A();

Answer Source

The first version does not cause a parse error, it is perfectly valid. The second it is, indeed not possible, but you can easily overcome such a problem with some coding standards.

If every team member creates, for each defined class, a function with the same name as the class, and a signature similar to the signature of the class constructor, then you won't have the second problem. Example:

class Foo
    public function __construct($param)

    public function bar()

 * @return Foo
function Foo($param)
    return new Foo($param);


Of course, you'll still have problems with library code.