처리예정
코어 오류
⋯
Rhymix 용 모듈이 프레임워크 클래스를 타입으로 받으면 TypeError 가 납니다
- 사용 버전
- 1.0.0
- 처리 버전
- 1.0.1
짓미로 옮긴 사이트에서 Rhymix 용으로 만들어진 모듈이 오류를 냅니다. 엠봉(mbong.kr)에서 제보가 들어와 확인했습니다.
증상
da_reaction 모듈이 걸린 화면에서 이렇게 멈춥니다.
TypeError: Argument 1 passed to Rhymix\Modules\Da_reaction\Src\Models\ReactionConfig::reactable() must be an instance of Rhymix\Framework\Helpers\SessionHelper, instance of Zittme\Framework\Helpers\SessionHelper given
원인
짓미는 프레임워크 클래스를 Zittme\ 이름으로 갖고 있고, Rhymix 용 모듈이 계속 동작하도록 Rhymix\ 이름을 별칭으로 이어 둡니다. 그런데 이 별칭은 Rhymix\ 이름이 먼저 요청될 때만 만들어집니다.
PHP 는 인자 타입 검사에서 자동 로딩을 건너뛸 수 있습니다. 넘어온 객체의 클래스와 그 부모·인터페이스 이름 중에 맞는 것이 없으면, Rhymix\ 이름을 찾아보지도 않고 바로 실패합니다. 그래서 별칭을 만들 기회 자체가 오지 않습니다.
da_reaction 만의 문제가 아닙니다. Rhymix 용 모듈이 프레임워크 클래스를 인자 타입으로 선언하는 경우 모두 해당됩니다.
조치
Zittme 클래스를 읽어 들이는 그 자리에서 Rhymix\ 별칭도 함께 잇도록 common/autoload.php 를 고쳤습니다. 이제 어느 이름이 먼저 요청되든 두 이름이 같은 클래스를 가리킵니다.
작은 재현 코드로 확인했습니다.
고치기 전: 실패 - Argument #1 ($h) must be of type Rhymix\Framework\Helpers\FakeHelper 고친 뒤: 통과
다음 코어 업데이트(9월 15일)에 포함됩니다. 그전에 같은 오류를 만나셨다면 common/autoload.php 한 파일만 교체하면 해결됩니다. 파일이 필요하시면 댓글로 알려 주세요.
댓글 0
아직 댓글이 없습니다.
로그인 후 댓글을 쓸 수 있습니다.