2016-11-24 47 views
0

Joomla中有一个示例Hello Word组件。访问Joomla中的PHP类方法

在型号:

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()示范返回