ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP におけるinitialize() とコンストラクターconstruct() の使用法分析

ThinkPHP におけるinitialize() とコンストラクターconstruct() の使用法分析

不言
不言オリジナル
2018-06-07 16:18:122922ブラウズ

この記事では、ThinkPHP の _initialize() とクラス コンストラクター _construct() の使用法を主に紹介し、ThinkPHP でのクラスの初期化時にサブクラスを構築する方法をサンプル形式で分析します。必要な友人は、設計におけるより重要な概念を参照できます。

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

__construct は、モジュール クラスが上位クラスを継承しており、__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';  
    }  
}

このようにして、親クラスでサブクラスのメソッドを呼び出すこともできます。 ##

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() を使用する必要があります。もちろん、フレームワークを変更することで、__initialize() 関数を好みの関数名に変更することもできます。

以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP の move_uploaded_file() 関数

##ThinkPHP クラス コンストラクター _construct() _initialize() との違い


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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。