【问题标题】:PHP Parse error: syntax error, unexpected T_OBJECT_OPERATORPHP Parse 错误:语法错误,意外的 T_OBJECT_OPERATOR
【发布时间】:2012-11-03 12:32:47
【问题描述】:

调试代码时出现此错误:

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

这是代码的 sn-p(从第 72 行开始):

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

【问题讨论】:

    标签: php


    【解决方案1】:

    很遗憾,在 PHP 5.4 之前,无法对刚刚使用 new 创建的对象调用方法。

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

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

    注意必须的括号对。

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

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

    【讨论】:

    • 即使他在 PHP 5.4 上使用他的代码也会产生语法错误。
    【解决方案2】:

    更改为您的语法无效:

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

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

    【讨论】:

    • 此代码适用于 php 4.9 版本。但是为什么会出现这个错误呢?
    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-12-28
      • 2012-10-30
      • 2015-12-31
      相关资源
      最近更新 更多