Est-il possible de créer une instance et une méthode appel en une seule commande (sur la même ligne) en PHP? [dupliquer]

StackOverflow https://stackoverflow.com/questions/1439998

  •  10-07-2019
  •  | 
  •  

Question

  

Double possible:
   En PHP , pouvez-vous instancier un objet et appeler une méthode sur la même ligne?

Est-ce possible?

Normalement, il faut deux lignes:

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

Est-ce que quelque chose comme cela est possible en PHP?:

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

Bien sûr, le premier code est meilleur pour la lisibilité et le code propre, etc., mais j’étais curieux de savoir si vous pouvez le réduire. Peut-être que cela pourrait être utile si la méthode renvoyait une autre instance, par exemple:

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

Est-ce possible en PHP?

Était-ce utile?

Autres conseils

Vous pouvez créer une méthode statique qui construit une instance par défaut et la renvoyer.

class Foo
{
     public static function instance() { return new Foo(); }
     ...
}

echo Foo::instance()->someMethod();

Je ne le recommande pas vraiment car il s’agit simplement de sucre syntaxique. Vous ne coupez qu'une ligne et vous perdez la lisibilité.

La fonctionnalité que vous avez demandée est disponible depuis 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 liste des nouvelles fonctionnalités:

  

Un accès de membre de classe à l’instanciation a été ajouté, par exemple. (new Foo) - > bar ().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top