안녕하세요!

 

다름이 아니라 자신의 모듈의 뷰나 컨트롤러 부분에 모델을 불러 올 때 getModel 함수를 부르는데 매번 부르기가 불편하더군요.

그래서 이 부분을 멤버 변수로 처리하면 어떨까해서 끄적여봅니다...

 

예)

모듈명 : editor

 

변경 전..

function ...()
{
   $oEditorModel = getModel("editor");
   ...
}
function ...()
{
   $oEditorModel = getModel("editor");
   $oEditorModel->...();
   ...
}

 

 

변경 후..

function init() //__construct()
{
   $this->oModel = getModel($this->module);
   ...
}
function ...()
{
   $this->oModel->...();
}

 

 

단지 코드 방식의 차이지만 가독성과 편리성이 좋더군요.

  • profile

    같은 모듈 내의 클래스라면 저렇게 불러오는 것도 괜찮죠. 단, 꼭 필요하지 않을 때도 항상 불러오도록 한다면 처리 속도가 느려질 수 있습니다. 파일 하나에 수천 줄의 소스가 들어 있는 모듈도 많거든요. 이럴 때는 __get() 매직 메소드를 활용하거나, oModel을 속성이 아닌 메소드로 만드는 것도 한 가지 방법입니다.

     

    저는 그냥 getModel('module')->getModuleSrlByMid($mid); 이렇게 많이 씁니다. 한 번 쓰고 말 객체라면 별도의 변수에 할당할 필요도 없고, 여러 번 쓰더라도 어차피 코어에서 캐싱해 주니까요.

  • profile ?
    아 getModel('module')->getModuleSrlByMid($mid); 이렇게 쓰는 방법도 있었군요
    하지만 $mid 값에 mid 값이 일치하지 않으면(action forward) 위험하지 않을까 싶군요..

    처리 속도도 고려를 해보긴 했는데 개인적으로 저는 속도보다는 코딩 방식을 동일하게 해서 가독성 및 관리가 편한쪽이 좋더라구요ㅎㅎ..