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.comtruehttp://www.bkjia.com/PHPjc/919629.html技術記事 ThinkPHP の __initialize() とクラス コンストラクター __construct() の使用法分析、thinkphp コンストラクター この記事では、ThinkPHP の __initialize() とクラス コンストラクター __construct() を例とともに分析します。ポイント...