CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.2 |
문제 페이지 주소 | 비공개 (검색로봇) |
1. contentextended 위젯 게시판 이름 출력이 되지않아 2~3일동안 claude, chatgpt 와 삽질 하다가 겨우 아래 글보고 해결하였습니다.
https://rhymix.org/tip/1531907
PHP 8 부터는 더 이상 클래스명과 동일한 메서드명이 생성자로 인식되지 않는다는군요.
표준 생성자 __construct() 사용이 필수라네요.
저처럼 게시판이름 출력되지 않을때 contentextended.class.php 의 1117 line 근처를 아래처럼 수정해보세요.
function contentextendedItem($browser_title='') ->
function __construct($browser_title='')
2. 개발 초보다 보니 위젯설치 후 화면에 출력되는 오류 내용과 디버그 패널에 나오는 내용을 보고 해결하게되는데,
이번엔 위 두곳과 서버 로그 파일에도 없어서 많이 해매었네요ㅠㅠ
ai 들도 전혀 감을 못잡아서 더 해매었는데 덕분에 class.php 에 대해 더 공부하게 되었어요 ㅎㅎ
3. 이런 오류는 라이믹스 디버그 설정으로 출력되게 할 수 없는 지 초보 입장에서 궁금해졌습니다.
감사합니다. 폭염에 건강하게 지내시길 .....

hatali
Lv. 4
댓글 1
PHP 8 입장에서는 그냥 클래스명과 같은 이름을 가진 메소드를 선언했을 뿐이고 그 메소드에는 어떤 특별한 의미도 없으므로, 오류가 나지 않습니다. function foo() 안에서 $foo라는 변수를 쓰더라도 문제가 없는 것과 마찬가지죠. 생성자는 __construct() 로 쓰라고 권장해 온 지도 20년이 되었으니, 이제는 굳이 알려줄 필요조차 없을 만큼 당연하게 여기는 겁니다.
오히려 조금 오래된 버전인 PHP 7에서는 "이거 곧 지원 종료될 예정이니 수정하라"라고 워닝이 뜨더군요. 그런데 오래된 자료를 쓰는 분들이 디버그 패널에 워닝을 켜놓을 리가 없으니......
대략 2015년 이전에 나온 자료를 PHP 8에서 쓸 때는 아주 조심해야 합니다. 에러 없이 그냥 작동하지 않는 것은 그나마 양반이고, 완전히 다른 의미로 해석해서 파일을 마구 삭제해 버리는 경우도 봤습니다. ㄷㄷㄷ