2011-07-09 5 views
6

codeignitersの読み込み方法を理解する上で問題があります。codeigniterのロードはどのように機能しますか?

まず最初に、かなり簡単に思えるオートロードがあります。毎回すべてをロードします。だから私はいつも使っているものに使うのがいいと思う。

第2に、すべてをインラインで読み込むことができます。しかし、ここに私の質問です:どのくらいそれはロードされたままですか?

コントローラでフォーム検証ライブラリをロードした後、モデルをロードします。モデルのフォーム検証を使用することはできますか?また、再度ロードする必要がありますか? 続きを読むビューと別のコントローラをロードすると、フォームの検証を使用できますか?それともロードする必要がありますか? リダイレクト後? ライブラリの代わりにモデルやヘルパーを読み込むのはどうですか? 他のモデルの中でモデルを使用したいとします。そのモデルをロードする場所はどこですか?

基本的な質問は、リロードする前に負荷がどれくらいかかりますか?独自のモデルやヘルパーを書くとき、たとえば、何かをロードするために

答えて

4

読み込み、現在のすべてのスクリプト一生続きます。 I.コントローラのメソッドを呼び出すと、リソースがロードされます。別のメソッドの中で同じリソースを呼び出すと、もう利用できなくなります。

コントローラが各リクエストで初期化されるため、コントローラに初期化が行われるため、コントローラが初期化されます(ログを有効にしてこれを明確に参照できます)。 index.php/mycontroller/method1にアクセスします。あなたのメソッドでは、例えば、HTMLヘルパーをロードします。 index.php/mycontroller/method2,にアクセスし、htmlヘルパーも必要ですが、メソッドにイントロをロードしなかった場合、関数が見つからないというエラーが発生します。

あなたは同じリソースが常に利用したいのであれば、基本的に、あなたは3つの選択肢があります:アプリケーション/設定/ autoloader.phpに

  1. 自動読み込み、それを
  2. すなわち内部のすべての要求の負荷を、そのリソースを使用する各メソッド
  3. をコントローラのコンストラクタの中に入れて、各リクエストで常に初期化されるようにします。

これは、オートロードと同じですが、コンストラクタを配置したコントローラでのみ動作できることを除けば、コントローラごとに何かをロードしたくない場合に便利ですオートローディングを使用するときのように)が、ほんのわずかです。この最後の方法を使用するためには 、(あなたがモデルで通常行うように)あなたのコントローラ内の親クラスのコンストラクタを呼び出すことを忘れないでください:

function __construct() 
{ 
    parent::__construct(); 
    $this->load->library('whateveryouwant'); 
} 
+0

ああ、今私は理解している。非常に明確で、ありがとう! :D – Vejto

-1

:他のすべての質問について

$ci = get_instance(); 
$ci->load->library('user_agent'); 
$ci->load->database(); 

を、私はあなたが各コントローラに必要なものをロードするべきだと思います。 @yi_Hが正しく指摘したようにそれは時間の終わりまでそこにとどまる

+0

ない私の質問が、まだ試しいただき、ありがとうございかなり!;) – Vejto

0

(あなたのスクリプトが終了すると、宇宙が崩壊したときには、ある)

+0

Okey、そうだとすれば、私は私が使用することを知っているすべてのものをオートロードするべきではないのですか?なぜなら、オートロードが常にすべてをリロードするのであれば意味をなさないからです。それとも、スクリプトの意味が理解できないのか分かりませんか?ユーザーが自分のウェブサイトを離れるとき、またはページの読み込みが終了したら、スクリプトは終了しますか? – Vejto

+0

ページの生成が完了したときです。秘密の答えを求めてください:) –

+0

Vejto:次のリクエストごとに、スクリプトが開始され、終了します。 – hakre

関連する問題