CodeIgniter の別のモデル内からモデルにアクセスできますか?
-
09-06-2019 - |
質問
CodeIgniter を使用して認証を必要とする Web アプリを作成しています。すべての認証を処理するモデルを作成しました。ただし、別のモデル内からこの認証モデルにアクセスする方法が見つかりません。別のモード内からモデルにアクセスする方法、または CodeIgniter 内で認証を処理するより良い方法はありますか?
解決
一般に、オブジェクトの中にオブジェクトを作成することは望ましくありません。これは悪い習慣です。代わりに、明確な API を作成し、モデルをモデルに挿入してください。
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
他のヒント
おそらく別の方法で解決する必要がありますが、モデル内にモデルをロードできるようです。見る CodeIgniter フォーラム 議論のために。
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();
}
}
また、オブジェクトの中にオブジェクトを作成すべきではないという Till の言っていることもわかりません。もちろんそうすべきです!オブジェクトを引数として送信することは、私にとってはあまり明確ではありません。
モデル内で認証を処理しないでください。モデルはデータベースや LDAP などと接続するためにのみ使用してください。
認証と認可の管理に使用する Auth ライブラリを作成しました。コントローラーからこのようなライブラリにアクセスできます。
新しい CodeIgniter を使用して、モデル内にモデルをロードできるようになりました。
所属していません StackOverflow