Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR

Tags:

php

I got this error when debugging my code:

PHP Parse error: syntax error, unexpected T_OBJECT_OPERATOR in order.php on line 72

Here is a snippet of the code (starting on line 72):

$purchaseOrder = new PurchaseOrderFactory->instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
like image 939
user1825110 Avatar asked Nov 14 '12 22:11

user1825110


3 Answers

Unfortunately, it is not possible to call a method on an object just created with new before PHP 5.4.

In PHP 5.4 and later, the following can be used:

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

Note the mandatory pair of parenthesis.

In previous versions, you have to call the method on a variable:

$purchaseFactory = new PurchaseOrderFactory;
$purchaseOrder = $purchaseFactory->instance();
like image 95
SirDarius Avatar answered Nov 08 '22 09:11

SirDarius


You can't use (it's invalid php syntax):

new PurchaseOrderFactory->instance();

You probably meant one of those:

// 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();
like image 1
Vyktor Avatar answered Nov 08 '22 10:11

Vyktor


change to as your syntax was invalid:

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

where presumably instance() creates an instance of the class. You can do this rather than saying new

like image 3
Samuel Cook Avatar answered Nov 08 '22 10:11

Samuel Cook