ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用分析、thinkphpconstructor_PHP チュートリアル

ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用分析、thinkphpconstructor_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:12:381309ブラウズ

ThinkPHP、thinkphp コンストラクターの __initialize() とクラス コンストラクター __construct() の使用分析

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

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

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

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

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

次のように 2 つのクラスを作成すると:


コードをコピーします コードは次のとおりです:class Action{
パブリック関数 __construct()
{
「こんにちはアクション」をエコーし​​ます
}
}
class IndexAction は Action{
を拡張します パブリック関数 __construct()
{
echo 'こんにちは IndexAction'
; }
}
$test = 新しいインデックスアクション
//出力 --- こんにちは、IndexAction

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


コードをコピーします
コードは次のとおりです:class IndexAction extends Action{ パブリック関数 __initialize()
{
echo 'こんにちは IndexAction'
; }
}

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


コードをコピーします
コードは次のとおりです:class IndexAction extends Action{ パブリック関数 __construct()
{
親::__construct(); echo 'こんにちは IndexAction'
; }
}

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

コードをコピーします

コードは次のとおりです:
class Action{ パブリック関数 __construct() { If(method_exists($this,'hello'))
                                                                          $this -> こんにちは();                                                                          「こんにちはアクション」をエコーし​​ます
}
}
class IndexAction は Action{
を拡張します パブリック関数 hello()
{
echo 'こんにちは IndexAction'
; }
}

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

つまり、ThinkPHP での __initialize() の登場は、プログラマーがサブクラスを作成するときにparent::__construct() を頻繁に使用することを回避し、同時にフレームワークで親クラスのコンストラクターを正しく呼び出せるようにするためのものです。 ThnikPHP では、サブクラスを初期化するとき、__construct() の代わりに __initialize() を使用します。 もちろん、フレームワークを変更することで、__initialize() 関数を好みの関数名に変更することもできます。

この記事で説明した内容が、皆様の ThinkPHP フレームワーク プログラミングに役立つことを願っています。

http://www.bkjia.com/PHPjc/919629.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/919629.html技術記事 ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法分析、thinkphp コンストラクター この記事では、ThinkPHP の __initialize() とクラス コンストラクター __construct() を例とともに分析します。ポイント...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。