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

coldplay.xixi
リリース: 2020-08-12 17:11:56
転載
2341 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!