0

あなたが私のようなら、CodeIgniterはかなりいいと思います。また、モデルからメソッドまたはプロパティをロードまたは呼び出すたびに_modelと入力するのは、醜くて時間がかかるため、おそらく嫌いです。

私はこれに対する解決策を数時間探していましたが、運がなかったので、簡単な修正をまとめました。

4

2 に答える 2

3

ローダークラスのドキュメントをご覧ください。

page_modelというクラスがあるとすると、通常は次のようにロードして使用します。

$this->load->model('page_model'); 
$this->page_model->function();`

毎回_modelと入力するのを避けたい場合は、次のようにします。

$this->load->model('page_model', 'page');    
$this->page->function();

私が最初にCodeIgniterを使い始めたとき、私はいつもこれをしていました。CIを数年間使用し、多くのWebサイトを利用した後、その決定を後悔しています。

コードを見たときに何が起こっているのかを知るのは難しいです。モデル関数を呼び出すコードの一部として_modelを使用すると、あいまいさがなくなります。たとえば、上記の関数呼び出しでは、ページはライブラリまたはモデルですか?

于 2012-10-20T19:15:51.623 に答える
1

これは、CodeIgniterが名前空間をサポートしていないためです。CIでの名前空間のサポートについてはしばらくの間議論されてきましたが、ストックコードベースでのサポートはまだ予定されています。

ソリューション?代わりにコントローラーのプレフィックスを付けてください。通常の使用法では、ファイルごとにコントローラーの名前を複数回入力する必要はほとんどありません。

最初にapplication/config / routersを編集し、他のすべてのルートの後に次の行を追加します。

$route['(:any)'] = "c_$1";

このルールを使用して、URIの最初のセグメントをプレフィックス付きの一致するコントローラーにルーティングします。となることによって:

http://www.domain.com/fishsticks

次のコントローラーにマップします。

c_fishsticks

次に、コントローラーファイルの名前をこのプレフィックスで変更し、内部のクラス名を一致するように変更します。

それでおしまい!これで、比較的自由にモデルに名前を付けることができます。モデルの名前は自由に変更できますが、各モデルのファイル名、各モデルのクラス名、および各モデルへのすべての参照を変更する必要があることを忘れないでください。これは簡単に最も時間のかかる手順ですが、プラス面として、一度にすべてを実行する必要はありません。

于 2012-10-20T18:44:41.063 に答える