Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

namespace와 use 문법으로 새로워진 모듈 구조에 적응하려고 노력 중입니다.

그러다 LayoutModel::getLayoutList()이 안 먹는 문제가 있어서 질문 남깁니다.

(use LayoutModel; 도 분명히 달아놨는데 이러네요)

 

이게 사실은 예전부터 안 됐던 걸로 아는데요.

다른 모듈과 달리 레이아웃 모듈에서 모델을 가져올 때 아래와 같은 문법은 안 되고요.

Context::set('layout_list', LayoutModel::getLayoutList());

 

다음과 같은 에러 메시지를 뿜습니다.

Error #0 "Using $this when not in object context" in modules/layout/layout.model.php on line 42

 

이렇게 구문법으로 처리를 하든지

$oLayoutModel = getModel('layout');

Context::set('layout_list', $oLayoutModel->getLayoutList());

 

아니면 이렇게 getInstance()를 거치든지 해야 하더군요.

Context::set('layout_list', LayoutModel::getInstance()->getLayoutList());

 

이게 레이아웃 모듈의 특성이 따로 있어서 그런 건가요?

아니면 getLayoutList 함수의 특성 때문에 그런 건가요?

  • ?

    getLayoutList() 함수는 static이 아니여서 차이가 납니다.
    기존 코드들이 점차적으로 많이 변경되어 왔지만 기존 방식을 유지하고 있는 코드들도 아직 있습니다.

    물론 함수 기능에 따라 static으로 변경이 불가한 함수도 많이 있습니다.

    이런 코드들은 getInstance()를 통해 사용합니다.

  • ? profile
    그렇군요. 기초가 워낙 없다보니 이런 데서 막히고 또 이런 게 궁금하고 그렇습니다ㅎㅎ
    답변 감사합니다!
  • profile

    static으로 호출할 수 있도록 변경했습니다.

  • profile profile
    코어 2.1.11에서 LayoutModel::getLayoutList()으로 잘 되는 거 확인했습니다.
    지나갈 수도 있는 이야기였는데 신경 써주셔서 감사합니다❤️