16

私はcodeigniterに非常に慣れていないので、コントローラーのコンストラクターの意味を知りたいと思いました。codeigniterチュートリアルで次のコードを見ました-

class upload extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper(form);
    }

    // rest of the class...

私の質問は、コンストラクターがいつ呼び出されるかです-コントローラーがリクエストを処理するたびに呼び出されますか(たとえば、コントローラークラスは受信するリクエストごとにインスタンス化されますか?)

4

4 に答える 4

15

まあ、それはより一般的な PHP の質問です。とにかく、はい、マニュアルでわかるように、魔法のメソッド __construct() がクラスのインスタンス化ごとに (自動的に) 呼び出されます: http://www.php.net/manual/en/language.oop5.decon. php

通常、実際にコンストラクターが必要でない限り、CI ではコンストラクターを呼び出す必要はありません。投稿した例では、コードはクラスのインスタンス化ごとにヘルパーをロードします。これは、すべてのメソッドでヘルパーをロードするのと同じで、多くの入力を節約し、忘れないようにします。あるいは、config/autoload.php のそれぞれの autoload 配列にロードしたいライブラリ/ヘルパー/モデルを置くこともできます (CI のマニュアルで「autoloading」を確認してください)。

子コントローラーでコンストラクターを定義したら、(メール CI_Controller クラスの) 親コンストラクターを呼び出す必要があります。これは、メインの CI オブジェクトが作成され、すべてのクラスが読み込まれる場所があり、子でそれらが必要になるためです。コントローラーも。そうしないと、子クラスが個別に構築され、継承されません。

英語は私の母国語ではありません:)

于 2012-11-25T22:59:06.680 に答える
4

コンストラクターは魔法です文字通り、魔法のメソッドと呼ばれます。コンストラクターをクールにするのは、メソッドの前にそれがあなたのために何かをするということです。したがって、管理者クラスがあり、それにアクセスするために誰かがログインする必要がある場合は、コンストラクターでログインを確認し、許可されていない場合はバウンスすることができます。

コンストラクターでは、クラスに必要なモデル、ライブラリ、ヘルパーなどをロードでき、それらはクラス内のすべてのメソッドで使用できます。

メソッドで使用される変数をロードできます。これはモデルにとって非常に便利です。

于 2012-11-26T18:17:36.460 に答える
0

最新の apache と codeigniter_construct()で関数を使用しないでください

使用helperlin in index()機能

于 2016-11-29T04:22:02.710 に答える