2

コントローラー(application / controllers / home.php)からCodeIgniterを使用して、次の行を確認します。

$this->load->library(array('account/authentication'))

AFAIK、これは:

  1. application / modules / account / libraries/authentication.phpから「authentication.php」をロードします
  2. application / libraries / account/authentication.phpから「authentication.php」をロードします

では、両方が存在する場合はどうなりますか?実験してみると、CIは最初のものを探しているようで、そのようなものが存在しない場合は、2番目のものをロードします。そんな変な振る舞いじゃないですか?2つのファイルは互いに関係がない可能性があります。

ローカルファイルを参照しているのか、モジュールファイルを参照しているのかを明確に宣言する方法はありませんか?

4

1 に答える 1

0

AFAIK、デフォルトのディレクトリはなくapplication/modules、CIのドキュメントとソースでそのリファレンスを見つけることができません。
CIの動作はno.2に従っていると言えます。
実際、CIのローダー(system / core / Loader.php)を詳しく見ると、次のことが わかります。

  1. 関数「ライブラリ」から始めます
  2. 関数'_ci_load_class'を呼び出す

'_ci_load_class'は、渡したライブラリ名をsubdirとclassnameの2つの部分に分解します。

まず、でクラスを探しますlibraries/subdir/class。それが見つかった場合-良い、それはそれをロードします。
クラスがそこで見つからなかった場合は、他のいくつかの事前定義されたパス($this->_ci_library_paths)でクラスを探します。
それでもライブラリが見つからない場合は、最後の試行を行い、でライブラリを探しますlibraries/class/class

私が考えることができる唯一のことは、ディレクトリを指すカスタムライブラリパスを定義したということですmodules。ただし、それでも、CIはでライブラリを探す必要がありますmodules/libraries/account/authentication.php

編集:ディレクトリを使用するで質問にタグを付けている
ことに気づきました。 残念ながら、私はそれを使った経験がありません。 私は(明らかに)あなたが説明した振る舞いを引き起こすのはこれだと思います。hmvcmodules

于 2012-07-31T19:33:31.830 に答える