ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP の初期化と構築の違いを理解する

ThinkPHP の初期化と構築の違いを理解する

coldplay.xixi
coldplay.xixi転載
2020-08-12 17:15:371996ブラウズ

ThinkPHP の初期化と構築の違いを理解する

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 サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。