1

loadModel()関数を使用してロードされたモデルをアンロードするために呼び出す必要があるcakePHPのunloadModelのような関数はありますか?

アンロードメソッドを見つけました、

http://api20.cakephp.org/file/Cake/Model/BehaviorCollection.php#method-BehaviorCollectionunload

しかし、それは行動のために使われているようです。ケーキは初めてです。そのような関数はありますか、それとも呼び出されたアクションがスコープを失うと自動的にアンロードされますか?

もう1つの疑問。MVCの通常の規則に対してloadModelを使用していますか?悪影響はありますか?

4

2 に答える 2

3

モデルをアンロードする必要はありません。コントローラ全体でモデルを使用する場合は、$uses変数を使用します。

public $uses = array('MyModel', 'AnotherModel');

特定のアクションで使用する場合は、次を使用してloadModelください。

$this->loadModel('MyModel');

それだけです-アンロードは必要ありません。

いいえ、MVC imoに反対するものではなく、悪影響は見られませんでした。

モデルをロードすることは非常に一般的です。例-私のプロジェクトのほとんどは、ほぼこれまでのモデルからの非常に多様なデータを持ついくつかの「ホームページ」を必要とします。その場合、テーブルさえも持たない「DashboardsController」を作成します。次に、データにアクセスする必要があるときに各モデルをロードします。(または$uses、すべてのアクションでそのデータを使用する場合)。

于 2012-08-10T13:13:17.680 に答える
1

いいえ、動作とモデルは2つの異なるものです。

ビヘイビアーはフックを介して機能を追加します。意味:モデル内の他のメソッドの動作方法を変更します。したがって、データを自動的にジオコーディングする場合は、ジオコーダーの動作を使用します。または、検索時に結果を復号化する場合は、復号化動作を追加します。したがって、ある時点でこの機能が不要になる可能性があるため、動作をデタッチ/アンロードするオプションが必要になります。

モデルは、データベースにアクセスするか、ラッパーメソッドを提供するだけです。他の方法の動作を変更しないため、サイトの残りの部分を機能させるために削除する必要はありません。

loadModelは、自動的に関連付けられていないモデルを動的にロードする方法にすぎません。これらのモデルが必要なコントローラーアクションからそれを行うのはまったく問題ありません。

于 2012-08-10T13:14:01.207 に答える