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
ここで何か問題がありますか?
明らかに17.2以降、ファクトリメソッドを1つの引数に制限することにしました。以前のバージョンでは、古い構文ではこれに限定されませんでした。 https://youtrack.jetbrains.com/issue/WI-38403 – Daniel
必要最小限のクラスを含む簡単なプロジェクトを作成して共有できますか?私は 'log'サービスのためにテストしたものです:' 'App :: make()'、 '$ this-> app-> make()'、 'app() (PhpStorm 2017.2.4) – LazyOne
注:Laravelの関数宣言では、可変パラメータparam '... $ param'ではなく、オプションのパラメータ(デフォルト値)を使用しています。 – LazyOne