PHP8 이상에서 cond="$module_info->module == 'board'" 이 부분 문제라고 뜨지 않나요?
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 8.0 |
<a href="{getUrl('act', 'dispBoardAdminBoardInfo')}" data-menu="boardConfig" cond="$module_info->module == 'board'">게시판 설정</a>
Warning: Undefined property: stdClass::$module_info
이렇게 뜨는데요, 이 부분은 어떻게 고치나요?
보통 $layout_info->, $module_info->, $widget_info->
스킨 상에서 다 이렇게 쓸텐데요..
php8에서는 저걸 warning으로 띄우는거 같은데요.
{@
$module_info = new stdClass();
}
모듈은 이렇게
{@
$layout_info = new stdClass();
}
레이아웃은 이렇게
{@
$widget_info = new stdClass();
}
위젯 스킨은 이렇게 미리 선언을 해놔야 하나요?

eond
Lv. 12
댓글 10
템플릿에서 선언하면 곤란하죠. 일반적인 화면이라면 코어에서 $module_info, $layout_info 등을 미리 넣어뒀을 텐데, 새로 선언하면 덮어씌워지니까요. mid가 없는 관리자 화면이거나, 뭔가 좀 특수한 상황에서만 에러가 나는 것입니다.
$module_info = $module_info ?? new stdClass();
이렇게 조건부로 선언할 수도 있겠고,
cond="isset($module_info->module) && $module_info->module === 'board'"
이렇게 변수가 존재하지 않으면 비교하지 않도록 방어할 수도 있습니다.
알려주신 1번 방법으로 한번 해보겠습니다. 감사합니다.
번거롭겠지만 일일이 2번까지 달아놔야할거 같네요.
($module_info->module ?? '') === 'board'
축약할 수도 있습니다.
아무튼 실제 작동에는 영향 없는 워닝입니다.
https://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.nullsafe
한 가지 덧붙이자면, nullsafe는 "Warning: Undefined variable" 에러는 막지 않습니다.