2016-11-24 46 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()示範返回