2017-11-30 6 views
2

ファクトリメソッドのために.phpstorm.meta.phpファイルを設定しようとしていましたが、完全に動作させることができません。引数が1つしかないファクトリメソッドでは機能しますが、引数が2つ以上ある場合は機能しません。PhpStormメタと複数のファクトリ引数

基本的に、1つ以上の引数を取るすべてのファクトリメソッド、特にスプラット引数、つまりfactory(string $className, ...$ctorArgs)が影響を受けます。

ここに私のメタファイルの例を示します。

<?php 
namespace PHPSTORM_META { 
    override(
     \ContainerInterface::make(0), 
     map([ 
      '' => '@', 
     ]) 
    ); 
} 

これは署名です。

<?php 
interface ContainerInterface{ 
    /* @return mixed */ 
    public function make (string $className, ...$ctorArgs); 
} 

これは期待される結果の例です。

<?php 
$container->make(MyClass::class, "hello", "world")-> // Nothing is indicated here, should indicate MyClass props/methods 

ここで何か問題がありますか?

+0

明らかに17.2以降、ファクトリメソッドを1つの引数に制限することにしました。以前のバージョンでは、古い構文ではこれに限定されませんでした。 https://youtrack.jetbrains.com/issue/WI-38403 – Daniel

+0

必要最小限のクラスを含む簡単なプロジェクトを作成して共有できますか?私は 'log'サービスのためにテストしたものです:' 'App :: make()'、 '$ this-> app-> make()'、 'app() (PhpStorm 2017.2.4) – LazyOne

+0

注:Laravelの関数宣言では、可変パラメータparam '... $ param'ではなく、オプションのパラメータ(デフォルト値)を使用しています。 – LazyOne

答えて

関連する問題