3

モデル、ビュー、またはコントローラーではないクラスをCodeIgniterプロジェクトに追加したいと思います。それらはおそらく組み込みのモデル/コントローラーであり、さまざまな方法で使用されます。これらのクラスはどこに保存する必要がありますか?また、CodeIgniterでそれらを実装するための最良の方法は何ですか?(または、より一般的には、MVCベースのフレームワークはありますか?)

編集:codeIgniterのドキュメントのいくつかを見ると、ヘルパーにオブジェクトを追加することが道のりのようですが、それは正しいですか?

4

3 に答える 3

9

CIは、外部ライブラリの統合を難しくしないという点で、多くのMVCフレームワークとは異なります。一般に、いくつかのアプローチがあります。

  1. ライブラリをinclude()/ require()するだけで、通常どおりに使用できます。名前の競合がない限り、これはほとんどの場合正常に機能します。CIはほとんど邪魔にならないので、これは一般的ではありません。この場合、好きな場所にライブラリを置くことができます。通常、これらはCIでのみ使用されるとは想定していないため、ドキュメントルートの外部にある共有の「libs」ディレクトリに保持しようとします。

  2. ライブラリをアプリケーション/ライブラリに配置し、CI-> load()メソッドを使用してロードします。これにより、命名規則にいくつかの制限が課せられるため、既存のライブラリをマッサージするか、ある種のラッパーコンストラクターを作成する必要がある場合があります。ライブラリの作成に関するCIドキュメントは、これをかなりうまくカバーしています。

個人的には、最初のアプローチの方がずっと好きです。これは、CIを使用する利点の1つです。

于 2010-03-05T18:13:15.797 に答える
2

個人的には、ライブラリである可能性がない場合は、objects_helper.phpとしてhelpersフォルダーに配置するか、特別な状況では、それを呼び出すLibraryオブジェクトと同じファイルに配置します。

オブジェクトファクトリライブラリを調べて、次のようなものを使用することもできます。

$this->factory->createUserObject( $name, $rank, $serial );

最後に、フックフレームワークを調べることもできますが、実際にそれを使用したいとは思われません。


他の状況で(コード/哲学的観点から)意味がないと思われる場合にのみ、require/includeを使用します。一般に、可能な限りフレームワーク内で作業することをお勧めします。

于 2010-03-05T18:24:37.620 に答える
1

これをライブラリにして、$ this-> load-> library();を使用することをお勧めします。詳細については、 http://codeigniter.com/user_guide/general/creating_libraries.htmlを参照してください。

ライブラリとヘルパーには違いがあります。外部ライブラリがオブジェクト指向でない場合は、ヘルパーとして必要になります。そうである場合は、問題なくライブラリを作成できるはずです。

于 2010-03-05T20:45:05.357 に答える