调试代码时出现此错误:
PHP Parse错误:语法错误,第72行的order.php中出现意外的T_OBJECT_OPERATOR
以下是代码片段(从第72行开始):
$purchaseOrder = new PurchaseOrderFactory->instance();
$arrOrderDetails = $purchaseOrder->load($customerName);
答案 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();