ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法を分析する

ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法を分析する

coldplay.xixi
coldplay.xixi転載
2020-08-12 17:11:562475ブラウズ

ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法を分析する

この記事では、ThinkPHP の __initialize() とクラス コンストラクター __construct() を例とともに分析します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

thinkphp の __construct は、モジュール クラスが上位クラスを継承し、上位クラスが定義されているため、気軽に使用することはできません。

関連学習の推奨事項: thinkphp

1. __initialize() は php クラスの関数ではありません。php クラスのコンストラクターは のみです。 __construct() .

2. クラスの初期化: サブクラスに独自のコンストラクター (__construct()) がある場合は、初期化のために独自のコンストラクターを呼び出します。そうでない場合は、親クラスのコンストラクターを呼び出します。独自の初期化。

3. サブクラスと親クラスの両方に __construct() 関数がある場合、サブクラスの初期化時に同時に親クラスの __constrcut() を呼び出したい場合は、サブクラスで parent::__construct().

を使用できます。次のように 2 つのクラスを記述する場合:

コードは次のとおりです:

class Action{  
    public function __construct()  
    {  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function __construct()  
    {  
        echo 'hello IndexAction';  
    }  
}  
$test = new IndexAction;  
//output --- hello IndexAction

明らかに、サブクラス IndexAction を初期化するときは、独自のコンストラクターを呼び出すため、出力は「hello IndexAction」になりますが、サブクラスを次のように変更します。

コードは次のとおりです。

class IndexAction extends Action{  
    public function __initialize()  
    {  
        echo 'hello IndexAction';  
    }  
}

サブクラス IndexAction には独自のコンストラクターがないため、出力は 'hello Action' になります。サブクラスの初期化時に同時に親クラスのコンストラクターを呼び出したい場合はどうすればよいですか?

コードは次のとおりです:

class IndexAction extends Action{  
    public function __construct()  
    {  
        parent::__construct();  
        echo 'hello IndexAction';  
    } 
    }

このようにして、2つの文を同時に出力することができます もちろん、親クラスのサブクラスのメソッドを呼び出す方法もあります

コードは次のとおりです:

class Action{  
    public function __construct()  
    {  
        if(method_exists($this,'hello'))  
        {  
            $this -> hello();  
        }  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function hello()  
    {  
        echo 'hello IndexAction';  
    }  
}

このように、2つの文を同時に出力することもでき、ここでのサブクラスのメソッド hello() は次のようになります。 ThinkPHP の __initialize() に似ています。

したがって、ThinkPHP での __initialize() の登場は、プログラマがサブクラスを作成するときに parent::__construct() を頻繁に使用することを回避しやすくするためだけです。同時に、フレームワーク内の親クラスのコンストラクターを正しく呼び出します。したがって、ThnikPHP でサブクラスを初期化するときは、__construct() の代わりに __initialize() を使用する必要があります。もちろん、 Framework を _ に変更します。_initialize() 関数を任意の関数名に変更します。

関連する推奨事項:プログラミング ビデオ コース

以上がThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法を分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。