2017-01-11 9 views
0
<?php 

interface iFoo { 
    public function print(): iFoo; 
} 

class Foo implements iFoo { 
    public function print(): iFoo { 
     return $this; 
    } 

    public function chain(): iFoo { 
     return $this; 
    } 
} 

$foo = new Foo(); 
$foo->print() 
    ->chain() // Method 'chain' not found in iFoo 
    ->print(); 

PhpStormは、契約に含まれていないにもかかわらず、チェーンメソッドを認識させる方法を教えてください。PhpStormはインタフェースにないメソッドを認識しません

答えて

1

戻り値の型がFooの場合は、chain()のクラスを持たない戻り型のiFooをPHPStormに伝えているからです。これはうまくいくと思います。

+0

契約に合致しないため、Fooをインタフェースの戻り型として設定することはできません。 –

1

print()方法はiFooインスタンスを返します。

public function print(): iFoo { 

iFooあなたは "メソッドが見つかりません" を参照してください理由です、chain()メソッドが含まれていません。返品タイプをFooに変更するか、iFoochain()メソッドを追加することができます。

関連する問題