묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
모듈에서 init 함수가 필요한 클래스들은 어떤것들인가요?
2014.12.22 13:39
init함수가 필수인 모듈클래스는 어떤것들이 있나요..?
view라던지..
댓글 5
-
퍼니엑스이
2014.12.22 13:47
-
devflow
2014.12.22 13:49
답변 감사합니다.
view에는 init이 없으면 오류가 발생했던 기억이 납니다.
그러면 init은 어느 누가 호출하는거죠? PHP 인터프리터 레벨인가요, XE 코어 레벨에서 호출하는 건가요?
-
퍼니엑스이
2014.12.22 13:52
XE 코어 단에서 호출하는 함수입니다.
ModuleHandler 에서 모듈 초기화 후 init 를 실행하도록 되어 있습니다.
(실제 init를 호출하는 곳은 ModuleObject 이니 주의하셔야 합니다)
-
퍼니엑스이
2014.12.22 13:53
init가 없을 때 오류가 발생했던 것은 아마 그 때 당시 init이 없을 때 예외 처리가 되어 있지 않아서였을 겁니다.
-
devflow
2014.12.22 13:56
소중한 시간내주셔서 감사합니다.
init 함수는 반드시 선언할 필요는 없습니다.
class mymoduleController extends mymodule
{
public function procMymoduleExecute(){
$oMymoduleModel = getModel('mymodule');
$config = $oMymoduleModel->getMymoduleConfig();if($config->useExecute)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
public function procMymoduleAuthorize()
{
$oMymoduleModel = getModel('mymodule');
$config = $oMymoduleModel->getMymoduleConfig();
if($config->useAuthorize)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}}
public function procMymoduleUnauthorize()
{
$oMymoduleModel = getModel('mymodule');
$config = $oMymoduleModel->getMymoduleConfig();
if($config->useUnauthorize)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
public function procMymoduleBroadcast()
{
$oMymoduleModel = getModel('mymodule');
$config = $oMymoduleModel->getMymoduleConfig();
if($config->useBroadcast)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
}
이런 식으로 action이 많아질 경우, 공통으로 호출되는 부분을 각 함수 내부에 일일이 적어줘야하는데, action이 많으면 많을수록 코드가 복잡해지겠죠. 동일한 기능을 하는 코드라면 init 함수를 만들어서 필요한 코드를 적어놓는 게 좋습니다.
그러면 코드도 간결해지고 유지보수도 편해집니다.
class mymoduleController extends mymodule
{
public function init()
{
$oMymoduleModel = getModel('mymodule');
$this->config = $oMymoduleModel->getMymoduleConfig();
}
public function procMymoduleExecute()
{
if($this->config->useExecute)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
public function procMymoduleAuthorize()
{
if($this->config->useAuthorize)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}}
public function procMymoduleUnauthorize()
{
if($this->config->useUnauthorize)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
public function procMymoduleBroadcast()
{
if($this->config->useBroadcast)
{
...
}
else
{
return new Object(-1, 'msg_not_permitted');
}
}
}