Ошибка PHP Parse: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR
Я получил эту ошибку при отладке моего кода:
Ошибка анализа PHP: ошибка синтаксиса, неожиданный T_OBJECT_OPERATOR в order.php в строке 72
Вот фрагмент кода (начиная с строки 72):
$purchaseOrder = new PurchaseOrderFactory->instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
Ответы
Ответ 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();