좋아, 코드 전체를 확인했어. XE/Rhymix 모듈이네! PHP 7.4~8.4 호환성 이슈들을 정리해볼게.
주요 수정 포인트를 분석하면:
&getController(),&getModel(),&getAdminModel()→ 참조 연산자&제거 (PHP 8.0+에서 deprecated → 8.4에서 에러)new BaseObject()→ 그대로 OK (이미 BaseObject 사용 중 — XE에서는 Object→BaseObject 마이그레이션 완료)_XE_PATH_→ Rhymix 호환 처리 (quizgame.mobile.php에서 사용)$args미초기화 후 프로퍼티 접근 →$args = new stdClass()필요 (PHP 8.2+ dynamic properties deprecated)$args = null후$args->xxx접근 →$args = new stdClass()로 변경
======================================================================================================
다운로드 : quizgame.zip PHP버전업
=======================================================================================================
퀴즈퀴즈 게임모듈 v2.0 업데이트
버전: 2.0
날짜: 2026-05-22
원작자: 쿡래빗 (원작 v0.1, 2014-02-04)
수정자: 불패의초인 (BSplus) — https://bsplus.net/
호환 PHP: 7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4
호환 CMS: XE / Rhymix
업데이트 내용
원본 모듈(v0.1)은 PHP 7.x 전용으로 제작되어 PHP 8.0 이상에서 Deprecated 경고 및 Fatal Error가 발생하는 문제가 있었습니다. 이번 업데이트에서는 기능 변경 없이 PHP 7.4~8.4 전 버전 호환이 되도록 코드를 수정하였습니다.
1. 참조 반환 연산자(&) 제거
PHP 8.0부터 함수 반환값에 대한 & 참조 할당이 Deprecated 되었고 PHP 8.4에서는 에러가 발생합니다.
// 변경 전
$oModuleModel = &getModel('module');
$oModuleController = &getController('module');
$oDB = &DB::getInstance();
// 변경 후
$oModuleModel = getModel('module');
$oModuleController = getController('module');
$oDB = DB::getInstance();
수정 파일 (PHP 7개 + 스킨 3개)
quizgame.admin.controller.php— 4곳quizgame.admin.view.php— 10곳quizgame.class.php— 1곳quizgame.controller.php— 13곳quizgame.mobile.php— 2곳quizgame.model.php— 1곳quizgame.view.php— 3곳skins/default/quiz_list.html— 1곳skins/simple_box/quiz_list.html— 6곳m.skins/default/quiz_list.html— 1곳
2. 동적 프로퍼티 생성 방식 수정
PHP 8.2부터 stdClass가 아닌 객체에 대한 동적 프로퍼티 생성이 Deprecated 되었습니다. $args = null 이후 $args->property 식으로 접근하던 코드를 $args = new stdClass()로 변경하였습니다.
// 변경 전
$args = null;
$args->log_srl = $val;
$module_config = null;
$module_config->minpoint = 10;
// 변경 후
$args = new stdClass();
$args->log_srl = $val;
$module_config = new stdClass();
$module_config->minpoint = 10;
수정 파일 (PHP 5개 + 스킨 1개)
quizgame.admin.controller.php— 루프 내 3곳quizgame.class.php—moduleInstall()1곳quizgame.controller.php— 3곳 (정답제출, 추천, 비추천)quizgame.model.php— 5곳 (문제조회, 상태변경, 로그 3종)quizgame.view.php—init()1곳quizgame.mobile.php—init()1곳skins/simple_box/quiz_list.html— 5곳
3. Rhymix(라이믹스) 호환 처리
_XE_PATH_ 상수가 Rhymix에서는 RX_BASEDIR로 변경되었습니다. 두 CMS 모두에서 동작하도록 분기 처리하였습니다.
// 변경 전
require_once(_XE_PATH_ . 'modules/quizgame/quizgame.view.php');
// 변경 후
$_quizgame_base = defined('RX_BASEDIR') ? RX_BASEDIR : _XE_PATH_;
require_once($_quizgame_base . 'modules/quizgame/quizgame.view.php');
수정 파일
quizgame.mobile.php— 1곳
4. 모듈 정보 갱신
conf/info.xml— 버전을0.1→2.0으로 변경, 날짜 갱신, 수정자 정보 추가
설치 방법
기존 modules/quizgame 폴더에 덮어쓰기하면 됩니다. DB 변경 사항은 없습니다.
5. 신규 스킨 3종 추가
기존 스킨(default, simple_box)에 더해 3종의 새로운 테마 스킨이 추가되었습니다.
- 다크나이트 (dark_night) — 어두운 네이비 배경의 다크모드 스킨. 눈의 피로를 줄여주는 디자인.
- 오션블루 (ocean_blue) — 시원한 블루 그라데이션 배경의 깔끔한 스킨. 둥근 카드 디자인.
- 체리블라썸 (cherry_blossom) — 따뜻한 핑크 벚꽃톤 스킨. 부드럽고 화사한 분위기.
모든 신규 스킨은 반응형(1080px/780px/480px) 대응이며, PHP 7.4~8.4 호환 코드를 포함합니다. 관리자 페이지 → 모듈설정 → 스킨 선택에서 변경 가능합니다.