PHP Parse错误:语法错误,意外T_OBJECT_OPERATOR

时间:2012-11-14 22:33:16

标签: php

调试代码时出现此错误:

  

PHP Parse错误:语法错误,第72行的order.php中出现意外的T_OBJECT_OPERATOR

以下是代码片段(从第72行开始):

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

3 个答案:

答案 0 :(得分:79)

不幸的是,在PHP 5.4之前,无法在刚刚使用new创建的对象上调用方法。

在PHP 5.4及更高版本中,可以使用以下内容:

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

在以前的版本中,您必须在变量上调用该方法:

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

注意:即使在升级到PHP 5.4之后,后者可能更有用/更明智,因为这两行可以更好地分离,并且包含硬编码类名的代码更少,这里是工厂类的名称​​ PurchaseOrderFactory 。这将使您能够更流畅地维护代码。

答案 1 :(得分:3)

更改为语法无效:

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

大概instance()创建了一个类的实例。你可以这样做,而不是说new

答案 2 :(得分:1)

你不能使用(它的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();