Existe-t-il un moyen d'instancier une classe et d'appeler l'une de ses méthodes sur une seule ligne? J'espérais ce qui suit fonctionnerait, mais il ne possède pas:Instancier et appeler une méthode sur une ligne
(new User())->get_name();
Existe-t-il un moyen d'instancier une classe et d'appeler l'une de ses méthodes sur une seule ligne? J'espérais ce qui suit fonctionnerait, mais il ne possède pas:Instancier et appeler une méthode sur une ligne
(new User())->get_name();
Ceci n'est pas possible. Vous pouvez cependant créer une méthode statique renvoyant une nouvelle instance. Quelque chose comme:
class User {
public static function create() {
return new self();
}
}
User::create()->get_name();
Cela fonctionnerait pour moi. Merci! –
Non, désolé, cela ne fonctionne malheureusement pas en PHP. Vous pourriez contourner cela en utilisant une méthode d'usine statique ou quelque chose comme ça.
Essayez si cela fonctionne pour vous. Il appelle la fonction de la classe pas un objet.
User::get_name();
Je sais que cette question est ancienne, mais les réponses peuvent être trompeuses.
Depuis la version 5.4, vous pouvez instancier et les méthodes d'appel en ligne:
(new Foo)->bar();
je l'espère - mieux garder votre code lisible. –
Que diriez-vous de quelque chose comme User :: get_instance() -> get_name()? Quelque chose comme ça peut-il fonctionner? –
duplication possible de [appelant une méthode d'un objet à la création d'instance] (http://stackoverflow.com/questions/2536885/calling-a-method-of-an-object-at-instance-creation) – Gordon