0

私は CakePHP 1.3 で構築された既存のシステムで作業するように割り当てられたばかりの CakePHP の初心者です。プロジェクトとその内容に慣れると、それらはコードのスニペットであり、よくわかりません。何度も(通常はコントローラーファイルで)次のように表示されます。

'$this->model'

'$this->model'

'$this->{$this->model}'

グーグル、ケーキのドキュメント、およびスタックオーバーフローを検索しても、これらの文字列が正確に何を指しているのかについての簡潔な説明はまだ明らかにされていません. 私が使用しているコントローラーの多くには、相互作用するモデルが複数ありますが、これらのスニペットがどのモデルを呼び出しているかを知るにはどうすればよいですか?

たとえば、web_forms_controller.php には、web_forms.php、web_forms_field.php、および web_forms_submission.php に対応する 3 つのモデルがあります。ここで何か基本的なことが欠けているように感じますが、RTM は私が求めている答えをまだ明らかにしていません。

したがって、上記の例では、web_forms_controller.php に見られる '$this->model' と '$this->Model' が web_forms.php モデルを参照していると推測しています。この場合、「$this->{$this->model}」が何を参照しているのかわかりません。

4

1 に答える 1

1

まず、CakePHP は「設定より規約」規約を使用します。これは非常に多くのことを説明しています!:) Inflector と呼ばれるものがあります-それは英語の名詞を複数形化および単数形化するだけです。フレームワーク全体で Cake の命名規則によって使用されます。

これを規則といくつかの重要な原則と組み合わせることで、Cake はどのクラスをどのクラスにバインドするかを伝えることができます。

したがって、$this->modelコントローラーでは、このコントローラーに直接関連付けられたモデルになります。たとえば、UsersControllerでは、モデル$this->modelになります。User

その他のバインドされたモデルは$uses、コントローラーのプロパティで定義されます。コントローラー$this->model自身のモデルのみを呼び出します。別のバインドされたモデルを呼び出すには (ex のPost場合)、次を使用します。

$this->Post->findAll();

$this->modeli は、特定のコントローラーからの便利なショートカットです。

于 2013-10-15T05:56:39.933 に答える