2016-11-24 6 views
0

В Joomla есть пример компонента Hello Word.Доступ к методу класса PHP в Joomla

В моделях:

class HellowWorldModelHelloWorld extends JModel 
{ 
Protected $message; 

Public function getMsg() 
{ 
if (!isset($this->message)) 
{ 
$this->message = 'Hello World'; 
} 
return $this->message; 
} 
} 

в соображениях:

class HelloWorldViewHelloWorld extends JViewLegacy 
{ 

    function display($tpl = null) 
    { 
     $this->msg = $this->get('Msg'); 

     if (count($errors=$this->get('Errors'))) 
     { 
      JLog::add(implode('<br/>',$errors),JLog::WARNING, 'jerror'); 

      return false; 
     } 

     parent::display($tpl); 
    } 
} 

Теперь мой вопрос, как это работает, насколько я узнал, я не могу сделать это ниже код

$this->msg = $this->get('Msg'); 

Первый $this->msg - msg объект не определен нигде в классе или в родительском классе. Таким образом, как msg определяется путем прямого доступа к $this->msg

Второй метод в модели определяется как function getMsg(). Поэтому я думаю, что он должен быть доступен как $this-getMsg() (но он не работает), но к нему обращаются как $this-get('Msg'), и он работает нормально.

Подробный ответ на примере поможет мне правильно понять, чего я не вижу.

ответ

0

Не знаете, как подробно я могу это сделать, но выполнение $this->msg = $this->get('Msg) составляет function getMsg(), который находится в модели.

Таким образом, на ваш взгляд, $this->msg = $this->get('Msg') заполнит переменной$this->msg с независимо возвращается в function getMsg() в модели.

Смежные вопросы