2012-11-14 19 views
44

自分のコードをデバッグするとき、私はこのエラーを得た:ここPHP解析エラー:構文エラー、予期しないT_OBJECT_OPERATOR

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

コード(行72から始まる)の抜粋です:

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

答えて

71

、そうではありませんPHP 5.4より前に、ちょうどnewで作成されたオブジェクトのメソッドを呼び出すことができます。 PHP 5.4では

以降では、次のように使用することができます。以前のバージョンでは

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

を、あなたは、変数のメソッドを呼び出す必要があります:

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

注:後でPHP 5.4にアップグレードした後であっても、これらの2行を分離しやすく、ハードコード化されたクラス名を含むコードが少なくて済むので、おそらくもっと役立ちます。PurchaseOrderFactory。これにより、時間の経過とともにコードをより流暢に保つことができます。

+2

PHP 5.4でコードを使用しても、構文エラーが発生します。 –

+0

PHP 5.5.9でこのエラーが発生しました –

3

変更あなたの構文が無効であったように:

おそらく instance()は、クラスのインスタンスを作成します
$purchaseOrder = PurchaseOrderFactory::instance(); 
$arrOrderDetails = $purchaseOrder->load($customerName); 

。あなたはこれを行うのではなく(それが無効なPHPの構文です)あなたが使用することはできませんnew

+0

このコードは、PHP 4.9バージョンで動作します。しかし、なぜこのエラーは発生しますか? –

1

を言ってすることができます

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(); 
関連する問題