시나리오 내 함수가 반환 형식 City
을 가지고 말을 PHP7 타입 힌트를 사용하고PhpStorm 다른
의 확장으로 반환 형식을 인식하지.
public function getCityById(int $city_id) : City { ... }
이 함수에서 파인더를 실행 한 결과를 반환합니다. findById()
기능이 AbstractModel
를 반환하기 때문에
return $this->city_finder->findById($city_id);
는 그러나 PhpStorm, 여기에 뿌려줍니다.
하지만 class City extends AbstractModel
인데 문제가되지 않습니다. 그러나 PhpStorm은이를 인식하지 못하고 경고 문구를 강조 표시합니다.
중요 경고이므로이 유형의 경고 (검사 사용 중지)를 음소거하고 싶지 않습니다.
질문
내가 PhpStorm이 return 문은 반환 형식을 만족시킬 것을 인식 할 수 있습니까? 그것에 대해 나에게 경고 중지
/** @var City $city */
$city = $this->city_finder->findById($city_id);
return $city;
이 시점에서,하지만 것 같아 :
추가 정보를 원하시면
한 가지 해결 방법과 같이, 그것을 변수를 추출하고 주석하는 것입니다 여분의 줄은 IDE에서 경고음을 음소거하기 위해 존재하기 때문에 피해야합니다.
Finder 클래스가 모델별로 생성되기 때문에 findById()
함수는 잘못된 형식을 반환하지 못하도록 보호됩니다.
$this->city_finder = $this->orm->getFinder(City::class);
//...
$city = $city_finder->findById(...);
'city_finder' 클래스의'findById()'메소드의 서명을 오버라이드하고 ('class'에 대한 PHPDoc 주석에서'@ method' 태그 사용),이 메소드가 구체적인'City' 클래스를 리턴하도록 할 수 있습니다 (예 : https : //stackoverflow.com/a/43112745/783119). 또 다른 아이디어 - https://stackoverflow.com/a/44913283/783119 (여기에 적용 할 지 확실하지 않음) – LazyOne