呼び出されたとき1.コンストラクタクラスが自動的にインスタンス化され、
2.サブクラスがコンストラクタを有していない、コンストラクタは、直接の親クラスのプロパティとメソッドを継承し、暗渠親クラスを呼び出します
サブクラスをインスタンス化するとき3.サブクラスとスーパークラスのコンストラクタを自動的にのみ独自のサブクラスのコンストラクタを呼び出すために、親クラスのコンストラクタを呼び出していません。
親と:: __construct ();スーパークラスのコンストラクタを呼び出すことができます。
__initialize()とクラスでThinkPHP __constructコンストラクタ()
があり、多くのオンラインの文と__initialize()の使用法であり、常に間違っていると感じたので、彼はそれをテストしました。結果と共有します。正しくないでください。
まず第一に、私が言う
の関数は、PHPクラス、PHPクラスのコンストラクタではありません(1)は、__初期化のみ__construct()。
2、初期クラス:あなたがあなた自身のサブクラスのコンストラクタを持っている場合(__construct())、その後、初期化され、独自のを呼び出し、そうでない場合は、親クラスのコンストラクタは初期化を呼び出します。
3、時間のサブクラスを(初期化中にあなたが__constrcut親クラスを呼び出している場合は、親と子クラス)は、時間の__construct()関数を持っているとき、あなたはサブクラスで親を使用することができます:: __構築物()。
次のように我々は、2つのクラスを記述する場合
- クラスアクション{
- パブリック関数 __construct ()
- {
- エコー 「こんにちはアクション」。
- }
- }
- クラスIndexActionは、拡張アクションを{
- パブリック関数 __construct ()
- {
- エコー 「こんにちはIndexAction」;
- }
- }
- $テスト = 新しいIndexAction 。
- //出力---こんにちはIndexAction
明らかにサブクラスIndexAction時間が彼らのコンストラクタを呼び出します初期化し、その出力は「ハローIndexAction」です。
しかし、サブクラスを変更します
- クラスIndexActionは、拡張アクションを{
- パブリック関数 __initialize ()
- {
- エコー 「こんにちはIndexAction」;
- }
- }
その後、出力は「ハローアクション」です。サブクラスIndexActionは独自のコンストラクタを持っていないので。
私はセットアップサブクラスにしたい場合は、親クラスのコンストラクタは、それを呼び出している間?
- クラスIndexActionは、拡張アクションを{
- パブリック関数 __construct ()
- {
- 親:: __construct ();
- エコー 「こんにちはIndexAction」;
- }
- }
これは、2つの文を同時に出力することができます。
もちろん、サブクラスは親クラスで呼び出すための方法があります。
- クラスアクション{
- パブリック関数 __construct ()
- {
- もし(method_exists ($この、'こんにちは' ))
- {
- これを$ - > こんにちは();
- }
- エコー 「こんにちはアクション」。
- }
- }
- クラスIndexActionは、拡張アクションを{
- 公共機能 のhello ()
- {
- エコー 「こんにちはIndexAction」;
- }
- }
そのような二つの言葉を同時に出力してもよいです。
そして、このサブクラスのメソッドにハロー())(ThinkPHPの__initializeに類似しています。
だから、そこ__initializeでThinkPHP()単にプログラマサブクラスを書くときに、親の頻繁な使用を避けるために:: __構築物()、右のコンストラクタは、親クラスの枠組みの中で呼び出すので、私たちはThnikPHPでありながら、あなたが好きなように代わり__constructの__initializeを使用するには、サブクラスの初期化時()、()、もちろんあなたも、フレームワークの__initialize()関数を変更することができ、関数名を変更します。
回します。http://www.thinkphp.cn/code/367.html