2012-02-25 1 views
3

私は新しいプロジェクトを開始しています。親のメソッドを取得するのはなぜベスト/正しいのですか?

が、それは、これを行わなければならない理由

class ControllerForum extends ControllerAbstract 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function actionViewThread($threadName, (int) $threadId) 
    { 
     $threadModel = $this->getModel('ModelThread'); 
    } 
} 

またはこの理由

class ControllerForum extends ControllerAbstract 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function actionViewThread($threadName, (int) $threadId) 
    { 
     $threadModel = parent::getModel('ModelThread'); 
    } 
} 

ありがとうございます。

答えて

3

ね。

parent::method()を呼び出すと、親クラス(ControllerAbstract)で定義されているものが呼び出されます。

したがって、ControllerAbstractとControllerForum(オーバーライド)の両方でgetModelを定義し、次に1つまたは別の呼び出しで異なるコードを実行するとします。私は、特定の動作が必要でない限り、継承されたメソッド(最初のフォーム)を使用します。

EDIT:@Chrisこれは継承だから、(親クラスを拡張する)子クラスは親クラスのメソッドとプロパティを持つことになります。 $this->method()を使用すると、親メソッドを呼び出さないので、親クラスから継承した現在のクラスのメソッドを呼び出します。 PHP 5 inheritance

+0

親メソッドを前に呼び出すときに、私は人々が$ this-> method()を使っているので、これは大丈夫です。 (なぜ私はそれが多くのフレームワークで何をしたのか分かりました)メソッドgetModelはControllerAbstractにのみ存在し、子クラスには存在しません。だから私はまだ親を使用するだろう:: –

+0

回答の編集 – WDRust

+0

を参照してください。子供が同じメソッドとプロパティを持っていなくても、安全に使うためのparent ::メソッドがあります。 –

-1

常にコードは最初の方法

$threadModel = $this->getModel('ModelThread'); 

あなたはクラスのオブジェクトを作成することができれば、その後、通常我々が使用している必要

に依存して第2のアプローチは、我々は、オブジェクトなしで関数を呼び出すしたいときに使用されますそう

$threadModel = parent::getModel('ModelThread'); 

それが必要

感謝に基づいていますあなたは$this->method()あなたがあなた自身の子クラス(この場合はControllerForum)で定義されてmethod()を呼び出している呼び出すと

:彼らは、2つの異なることを行う

関連する問題