좋아, 코드 전체를 확인했어. 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 호환 코드를 포함합니다. 관리자 페이지 → 모듈설정 → 스킨 선택에서 변경 가능합니다.
그런데 퀴즈 게임 출제자 입장에서 생각해보니
문제를 맞춘 사람에게만 포인트 지급이 있고
정작 문제를 수고스럽게 등록한 사람에게 포인트 지급이 없는듯 해서
오히려 퀴즈 등록이 활발하게 이루지지 않는듯 합니다.
결국 퀴즈가 없으면 이 모듈도 의미가 없는데
만약 퀴즈 등록시에 퀴즈 제출자에게도 포인트를 지급하면 이 모듈 인기도가 올라갈듯 합니다.
감사합니다.