Подтвердить что ты не робот

Ошибка PHP Parse: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR

Я получил эту ошибку при отладке моего кода:

Ошибка анализа PHP: ошибка синтаксиса, неожиданный T_OBJECT_OPERATOR в order.php в строке 72

Вот фрагмент кода (начиная с строки 72):

$purchaseOrder = new PurchaseOrderFactory->instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
4b9b3361

Ответ 1

К сожалению, невозможно вызвать метод только для объекта с new перед PHP 5.4.

В PHP 5.4 и более поздних версиях можно использовать:

$purchaseOrder = (new PurchaseOrderFactory)->instance();

В предыдущих версиях вы должны вызвать метод для переменной:

$purchaseFactory = new PurchaseOrderFactory;
$purchaseOrder = $purchaseFactory->instance();

Примечание. Более поздняя версия, вероятно, еще более полезна/мудрена даже после того, как вы обновили до PHP 5.4, потому что эти две строки могут быть лучше разделены и меньше кода, содержащего жестко закодированное имя класса, здесь имя factory class PurchaseOrderFactory. Это позволит вам более свободно поддерживать код с течением времени.

Ответ 2

измените значение, так как ваш синтаксис недействителен:

$purchaseOrder = PurchaseOrderFactory::instance();
$arrOrderDetails = $purchaseOrder->load($customerName);

где предположительно instance() создает экземпляр класса. Вы можете сделать это, а не говорить new

Ответ 3

Вы не можете использовать (это недействительный синтаксис php):

new PurchaseOrderFactory->instance();

Вероятно, вы имели в виду один из них:

// Initialize new object of class PurchaseOrderFactory
new PurchaseOrderFactory(); 

// Clone instance of already existing PurchaseOrderFactory
clone  PurchaseOrderFactory::instance();

// Simply use one instance
PurchaseOrderFactory::instance();

// Initialize new object and that use one of its methods
$tmp = new PurchaseOrderFactory();
$tmp->instance();