2016-11-24 43 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が定義されるか、直接アクセスすることによって設定されるか$this->msg

第2に、モデルのメソッドはfunction getMsg()と定義されています。だから私はそれが$this-getMsg()としてアクセス可能であるべきだと思う(しかし、それは動作しません)が、それは$this-get('Msg')としてアクセスされており、正常に動作しています。

詳細な回答を参考にすれば、私が迷っていることを正しく理解するのに役立ちます。

答えて

0

私はこれを行うことができますが、$this->msg = $this->get('Msgを実行すると、どれくらい詳細がわかりません)は、モデルにあるfunction getMsg()の実行になります。

だから、あなたのビューでは、$this->msg = $this->get('Msg')はがモデルにfunction getMsg()によって返されるものは何でも変数$this->msgに移入されます。

関連する問題