Справка по объекту PHP -> неожиданный T_OBJECT_OPERATOR - PullRequest
0 голосов
/ 28 мая 2010

Пожалуйста, помогите мне понять:

print gettype(new CustomerObject()) 

печатает: «объект» (значит, это объект)

НО

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

отпечатков: неожиданно T_OBJECT_OPERATOR

Если я делаю это в две строки, все работает нормально

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

отпечатки: объект

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

печатает: массив

Похоже, что линии нельзя объединить в один вызов. Это правильно? и какая логика за этим стоит?

1 Ответ

2 голосов
/ 28 мая 2010

Вы немного смущены

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

Пытается вызвать метод get_customer (), который возвращает gettype. (Строка не является объектом)

Обычно, если вы хотите создать объект, а затем вызвать для него метод, вы должны сделать это в двух отдельных строках.

Это не работает:

$array = new Object->getArray();

Это работает:

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