2009-09-17 9 views
3

Possible en double:
In PHP, can you instantiate an object and call a method on the same line?Est-il possible de créer une instance et une méthode d'appel en une commande (sur la même ligne) en PHP?

Est-il possible?

Normalement, il nécessite deux lignes:

$instance = new MyClass(); 
$variable = $instance->method(); 

est quelque chose comme cela possible en PHP ?:

$variable = new MyClass()->method(); 

Bien sûr, le premier code est préférable pour une meilleure lisibilité et un code propre, etc. , mais j'étais juste curieux de savoir si vous pouvez le réduire. Peut-être qu'il pourrait être utile, si la méthode retourne une autre instance, par exemple .:

$instance = new MyClass()->methodThatReturnsInstance(); 

Est-il possible en PHP?

+0

Avez-vous même essayé vous-même pour voir si cela fonctionne? –

+0

http://stackoverflow.com/questions/1402505/in-php-can-you-instantiate-an-object-and-call-a-method-on-the-same-line – karim79

+0

@Mark Rushakoff: Le code nouveau MyClass() -> method() est invalide (erreur d'analyse), donc je voudrais savoir s'il est possible de le faire d'une autre manière. –

Répondre

1

Vous pouvez créer une méthode statique qui construit une instance par défaut et la renvoie. Je ne le recommande pas vraiment car c'est juste du sucre syntaxique. Vous ne coupez qu'une ligne et perdez de la lisibilité.

1

La fonction que vous avez demandé est disponible à partir de PHP 5.4. Voici la liste des nouvelles fonctionnalités de PHP 5.4:

http://docs.php.net/manual/en/migration54.new-features.php

Et la partie pertinente de la nouvelle liste des fonctionnalités:

accès aux membres de classe sur instanciation a été ajouté, par exemple (nouveau Foo) -> bar().

Questions connexes