認証が必要なCodeIgniterを使用してWebアプリケーションを作成しています。すべての認証を処理するモデルを作成しました。しかし、私は他のモデルの中からこの認証モデルにアクセスする方法を見つけることができません。別のモードの中からモデルにアクセスする方法、またはCodeIgniterで認証を処理するためのよりよい方法はありますか?CodeIgniterの別のモデルの中からモデルにアクセスできますか?
答えて
一般に、オブジェクト内にオブジェクトを作成する必要はありません。それは悪い習慣ではなく、明確なAPIを書いてモデルにモデルを挿入することです。
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
モデルで認証を処理しないでください。モデルを使用してデータベース、またはLDAPなどとのインタフェースをとるだけです。
私は認証と承認を管理するためのAuthライブラリを作成しました。このようなライブラリーは、コントローラーからアクセスできます。
私はいつもモデル内にoauthの実装を入れていますが、私は認証コード –
で私のコントローラーを掘り起こすのが好きではありません。私はMY_controllerを作成し、そこにすべてoauthします。 – tomexsans
モデルの中にモデルを読み込むことはできますが、おそらくこれは別の方法で解決する必要があります。詳細は、CodeIgniter forumsを参照してください。
class SomeModel extends Model
{
function doSomething($foo)
{
$CI =& get_instance();
$CI->load->model('SomeOtherModel','NiceName',true);
// use $CI instead of $this to query the other models
$CI->NiceName->doSomethingElse();
}
}
また、オブジェクト内にオブジェクトを作成しないでください。もちろん、あなたはすべきです!引数としてオブジェクトを送信することは私にははるかに明確ではありません。
苦情は、そのようにすれば、2つのモデルの間に不必要に強い依存関係が生じることです。 たとえば、SomeModelにSomeOtherModelの模擬バージョンを与えることができればうれしいですね。前者が後者を直接ロードしている場合は、これを行うことはできません。 プラグインシステムを使用するように既存のコードをリファクタリングする場合など、後でコードを変更して、同じインタフェースを持つ別のモデルを使用します。 –
Googleにはオープンソース依存性注入フレームワークがあります。それはJava用ですが、依存関係注入の賛否両論のいくつかを説明しています。 http://code.google.com/p/google-guice/ –
@Rob Howard依存関係の注入があまりにも遠すぎるようなことがあります。使用するすべてのオブジェクトを単独でテストする必要はないため、使用するすべてのオブジェクトを注入する必要はありません。むしろ、全体として一緒に働くシステムとモジュールをテストし、お互いに分離して注入する必要があります。 –
モデル内にモデルをロードすることが、新しいCodeIgniterで可能になりました。
- 1. Codeigniter別のモデルのDBオブジェクトにアクセス
- 2. CodeIgniterでは、別のモデルから1つのモデルにアクセスするにはどうすればよいですか?
- 3. Codeigniter - コントローラのデータをモデルからアクセス
- 4. Django ORMのスーパークラスモデルからサブベッドクラスのモデルにアクセスできますか?
- 5. CodeIgniterのビューからモデルにアクセスする方法
- 6. DjangoRestFrameWork別のモデルから1つのモデル
- 7. 他のモデルのビューまたはコントローラからモデルにアクセスする
- 8. デリゲートからQTreeviewの選択モデルにアクセスできますか?
- 9. Django - 別のモデルで抽象モデルを使用できますか?
- 10. Railsの.eachループから別のモデルにアクセスする
- 11. codeIgniter - モデルからテキストファイルにアクセスする方法
- 12. モデルの中からプロパティにアクセスする方法rails
- 13. Django:別のモデルからモデルのデータを生成するには?
- 14. ブラウザコンソールからSpine JSモデルにアクセスできますか?
- 15. Rails 3エンジンは親アプリケーションからモデルにアクセスできますか?
- 16. Djangoは別のモデルからモデルを取得しています
- 17. Django:ManyToManyFieldから "through"モデルにアクセス
- 18. あるモデルから別のモデルに値を渡す
- 19. Django Rest Frameworkの中間モデルからのフィールドへのアクセス
- 20. Djangoの別のアプリからモデルをインポートできません
- 21. rubyはあるモデルから別のモデルにクリップクリップをコピーしますか?
- 22. Codeigniterモデルを-7日からフェッチする
- 23. コードイグナイターのモデルの別のモデルからメソッドを呼び出すことはできますか?
- 24. コントローラが1つのモデルにアクセスできますが、別のモデルにはアクセスできないのはなぜですか?
- 25. モデルから別のモデルへの確率の使用
- 26. RACTIVEは:別のモデルから1つのモデルのメソッドを実行
- 27. Railsでは、あるモデルのhas_many関係を別のモデルから設定できますか?
- 28. Railsペーパークリップ1つのモデルから別のモデルへのハッシュ付きのコピーイメージ
- 29. Railsコントローラはどのようにモデルにアクセスできますか?
- 30. UWP:BackgroundTaskからのデータとモデルへのアクセス
これは良い方法ですか? Model2のユーザーは、Model1に依存していることを知っておく必要があるためです。 良い習慣は何ですか? – Sabya
はい、Model1の内部でModel2を初期化するのではなく、依存性を「注入する」方が良い方法です。 – Till
それはDRYの観点からは良いとは言えません。あるモデルの側面を変更し、別のモデルのアクションをトリガする機能を持っていたらどうなりますか? – wag2639