0

我是一个 cakePHP 新手,刚刚被分配到使用 cakePHP 1.3 构建的现有系统上工作。当我熟悉该项目及其内容时,它们是我不太了解的代码片段。一次又一次(通常在控制器文件中)我看到这些:

'$this->model'

'$this->Model'

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

搜索 google、cake docs 和 stackoverflow 尚未对这些字符串所指的内容做出简明的解释。我正在使用的许多控制器都有多个与之交互的模型,我如何知道这些片段正在调用哪一个?

例如 web_forms_controller.php 有 3 个模型,与它一起使用 web_forms.php、web_forms_field.php 和 web_forms_submission.php。我觉得我在这里遗漏了一些基本的东西,但 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在控制器中将有与此控制器直接关联的模型。例如,在 a 中UsersController$this->model将是User模型。

其他绑定模型在$usesController 的属性中定义。通过$this->model你只调用控制器自己的模型。要调用另一个绑定模型(例如 ex Post),请使用:

$this->Post->findAll();

$this->model我只是任何给定控制器的便捷快捷方式。

于 2013-10-15T05:56:39.933 回答