2010-09-21 7 views
0

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(); 
+0

je l'espère - mieux garder votre code lisible. –

+1

Que diriez-vous de quelque chose comme User :: get_instance() -> get_name()? Quelque chose comme ça peut-il fonctionner? –

+0

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

Répondre

6

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(); 
+0

Cela fonctionnerait pour moi. Merci! –

2

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.

0

Essayez si cela fonctionne pour vous. Il appelle la fonction de la classe pas un objet.

User::get_name(); 
Questions connexes