2010-05-28 4 views
0

S'il vous plaît me aider à comprendre:objet PHP aide -> T_OBJECT_OPERATOR inattendu

print gettype(new CustomerObject()) 

impressions: "objet" (il est donc un objet)

MAIS

print gettype((new CustomerObject())->get_customer()); 

impressions: T_OBJECT_OPERATOR inattendu Si je le fais sur deux lignes cela fonctionne bien

$object = new Customer($order->customer_id); 
print gettype($object); 

impressions: objet

$customer = $object->get_customer(); 
print gettype($customer); 

impressions: tableau

Il semble que les lignes ne peuvent pas être réunis en un seul appel. Est-ce correct? et quelle est la logique derrière cela?

Répondre

2

Vous êtes un peu confus

print gettype((new CustomerObject())->get_customer()); 

tente d'appeler la méthode get_customer() sur ce qui revient getType. (Une chaîne n'est pas un objet)

Fondamentalement, si vous voulez créer un objet, puis appeler une méthode, vous devez le faire sur deux lignes distinctes.

Ce ne worky:

$array = new Object->getArray(); 

Ce worky:

$object = new Object; 
$array = $object->getArray(); 
+0

Ok, tout ce que je pensais ... Je l'ai tâté avec java et vous pouvez appeler la méthode comme une partie de la déclaration d'objet ... C'est évidemment une fonctionnalité qui est exclusive à Java? –

+0

Eh bien, ce n'est pas exclusif à Java. Juste exclu de PHP. –

+0

Encore un autre ennui PHP :( – GateKiller