2017-11-30 3 views
2

.phpstorm.meta.php 파일을 공장 방법으로 설정하려고했지만 완전히 작동하지 않습니다. 인수가 1 개만있는 팩토리 메소드에서 작동하지만 인수가 2 개 이상이면 작동하지 않습니다.PhpStorm 메타 및 여러 팩토리 인수

기본적으로 1 개 이상의 인수를 사용하는 모든 팩토리 메소드, 특히 스 플랫 (splat) 인수, 즉 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 이후 그들은 공장 방법을 단 하나의 인수로 제한하기로 결정했습니다. 이전 버전과 이전 구문에서는이 제한이 없었습니다. https://youtrack.jetbrains.com/issue/WI-38403 – Daniel

+0

최소한의 수업을 포함하는 간단한 프로젝트를 만들고 공유해주십시오. Laravel :'\ App :: make()','$ this-> app-> make()','app()'-'log' 서비스를 테스트 한 것들 - (PhpStorm 2017.2.4) – LazyOne

+0

참고 : Laravel의 함수 선언은 가변 매개 변수 '... $ param'이 아닌 선택적 매개 변수 (기본값)를 사용합니다. – LazyOne

답변