2017-01-10 19 views
1

해킹 유형 별칭을 자동로드하는 방법이 있습니까? PSR-4 호환 경로에 별도의 파일로 저장했습니다. PSR-0 또는 PSR-4에서 정식으로 언급되지 않은 Hack 전용 파일이라는 것을 알고 있지만 다음 중 하나가 발생합니다.자동로드 해킹 유형 별칭

  1. HHVM는 기본 유형에 유형 별칭을 확장 것, 또는
  2. spl_autoload 클래스, 함수 또는 인터페이스 이름과 유형을 치료하고 별칭을 해결, 스크립트를 실행합니다.

그러나 어떤 일도 발생하지 않습니다. 런타임에 메서드 호출로 인해 유형 힌트와 호환되지 않는, 즉 :

Catchable fatal error: Argument passed to {method_name} must be an instance of {type_alias}, {concrete_type} given.

편집 실패 : 나는 특히 작곡가를 사용하고 있음을 언급해야한다. 이것이 작곡가 특유의 것인지 확신 할 수 없습니다.

답변

2

예, HHVM에서 유형을 자동로드 할 수 있습니다. 클래스 맵 방식과 HH\autoload_set_paths 기능을 사용해야합니다.

작곡가에 필요한지도를 생성하기위한 지원을 추가하는 hhvm-autoload 패키지가 있습니다.

+0

나는 기쁘게 고쳐졌다! – concat

0

나는 이것이 가능하다고 생각하지 않습니다. PHP는 자동 로딩을위한 유형 힌트를 등록하지 않습니다. 유형 힌트를 수행하는 유일한 방법은 오토로더 호출을 트리거 한 클래스 또는 하위 클래스를 전달하는 것입니다. 인터프리터가 그것을 확인하는 시점에 유형 힌트를 알지 못하는 것은 불가능합니다.

이것은 유형 별칭이 이러한 가능성을 소개하기 때문에 해킹에서만 문제가됩니다. PHP와의 일관성을 유지하기 위해서는 바이트 코드를 컴파일하는 동안 HHVM이 유형 별명을 확장하는 것이 유일한 해결책이라고 생각합니다.