다음 코어 업데이트 9월 15일(화) D-15 코어는 매월 셋째 주 화요일 공식 자료는 월 1회 (베타 자료 1~2주) 코어 릴리즈 자료 릴리즈
처리예정 코어 오류

Rhymix 용 모듈이 프레임워크 클래스를 타입으로 받으면 TypeError 가 납니다

zittme 조회 수 1 #33573
사용 버전
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

아직 댓글이 없습니다.

로그인 후 댓글을 쓸 수 있습니다.