ThinkPHP の 2 つの関数、initialize() とconstruct() は、コンストラクターとして理解できます。前者は TP フレームワークに固有のもので、後者は PHP コンストラクターです。 2つの違いは何ですか?
インターネットで検索すると、両者は同じであるという答えが多くあります。ThinkPHP の初期化は PHP のコンストラクトに相当します。それは間違いです。そうであれば、なぜ tp はコンストラクトを使用しないのでしょうか?しかし、ThinkPHP バージョンを単独で作成する場合はどうすればよいでしょうか? 初期化コンストラクターはどうすればよいでしょうか?
関連する学習に関する推奨事項: thinkphp
自分で試してみると違いがわかります。
a.php class a{ function __construct(){ echo 'a'; } }
b.php(注意: ここのコンストラクターはparent::__construct()を呼び出しません;)
include 'a.php'; class b extends a{ function __construct(){ echo 'b'; } } $test=new b();
実行結果:
b
クラス b はクラス a を継承していますが、出力結果から、プログラムはクラス b のコンストラクターのみを実行し、自動的にコンストラクターを実行しないことがわかります。親クラスの。
b.phpのコンストラクタをparent::__construct()
で追加する場合は異なります。
include 'a.php'; class b extends a{ function __construct(){ parent::__construct(); echo 'b'; } } $test=new b();
出力結果は次のようになります。
ab
この時点で、親クラスのコンストラクターが実行されます。
thinkphp のInitialize() 関数を見てみましょう。
BaseAction.class.php class BaseAction extends Action{ public function _initialize(){ echo 'baseAction'; } IndexAction.class.php class IndexAction extends BaseAction{ public function (){ echo 'indexAction'; }
Index でインデックス メソッドを実行すると、出力結果は次のようになります:
baseActionindexAcition
が表示されている場合、サブクラスの _initialize
メソッドは、親クラスの _initialize メソッドを自動的に呼び出します。 PHP のコンストラクター構造に関しては、親クラスのメソッドを呼び出したい場合は、サブクラスのコンストラクターで明示的に呼び出す必要があります。parent::__construct();
これは初期化です。 ThinkPHP での構築は異なります。
関連する推奨事項: プログラミング ビデオ コース
以上がThinkPHP の初期化と構築の違いを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。