2

現在、CodeIgniter を使用しています。フロント コントローラーは、入力に応じて 2 つのライブラリのうちの 1 つを読み込みます。両方のライブラリがモデルにアクセスする必要があります。私の質問: 各ライブラリにモデルをロードする必要があります (さらに、すべてのライブラリの CI の get_instance() を使用して CI ロード関数にアクセスすることもできます)、または Frontcontroller und 'pass' にモデルをロードするための「より良い」ソリューションはありますか?モデルをいずれかのライブラリに。自動ロードの可能性もチェックしていますが、それでもライブラリ内から直接アクセスすることはできません。すべてのライブラリにモデルをロードするのは最善の解決策ではないと思いますが(さらに多くのライブラリが必要な場合など)、今はちょっと行き詰まっています.. :-(
一言で言えば:
- モデルをFrontController とおそらく「パス」
- または、任意のライブラリ内で CI のインスタンスを取得し、モデルをロードします (そして冗長コードを記述します)
- または、より良い解決策がありますか?

事前にt​​hx :-)

編集:

私は次のようにします:
public function __construct()
{
$this->ci_instance =& get_instance();
$this->ci_instance->load->model('my_model');
$this->_model = $this->ci_instance->my_model;
}

次に、次のような関数を使用します:
$mysql_result = $this->_model->get_testdata();

これは、tank auth lib のソリューションよりも少し短くなっています (ただし、ほぼ同じです)。:-) しかし、Tank Auth Lib も私を助けてくれました (プロがどのようにそれを行うかを見るため)。それもthx dm03514!

4

2 に答える 2

0

get_instance は、公式ドキュメントで提案されているネイティブな方法です:

モデル オブジェクトに簡単にアクセスするために、ライブラリにプロパティを定義します。

public $_model = FALSE;

ライブラリコンストラクターのどこかに:

$CI =& get_instance();
$CI->load->model('model_name');
$this->_model = $CI->model_name;

その後、呼び出して任意のライブラリ メソッドでモデルにアクセスできます。$this->_model->method();

于 2012-11-07T14:00:11.407 に答える
0

このような大きな疑問があるときはいつでも、私は通常、Tank Auth. ライブラリ/モデルはクラス内にロードされます。これにより、ライブラリが自己完結型になり、組み込みパラメータに依存しなくなります。

すでにロードされているライブラリを再ロードすることは単なる条件でLoader.phpあり、それほどパフォーマンスは高くありません。

于 2012-11-07T14:00:58.840 に答える