【问题标题】:Understanding '$this->model'理解'$this->model'
【发布时间】:2013-10-14 16:57:42
【问题描述】:

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

'$this->model'

'$this->模型'

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

搜索 google、cake docs 和 stackoverflow 尚未揭示这些字符串到底指的是什么的简明解释。我正在使用的许多控制器都有多个与之交互的模型,我如何知道这些 sn-ps 正在调用哪一个?

例如,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}' 是指什么。

【问题讨论】:

  • 这些几乎肯定不是 CakePHP 框架的一部分,而是您正在使用的代码库的一部分。我怀疑它是一个包含您的模型别名之一的字符串。然后 $this->{$this->model} 将获取具有该别名的模型。

标签: php cakephp cakephp-1.3


【解决方案1】:

首先,CakePHP 使用“约定优于配置”约定。这很好地解释了很多! :) 有一个叫做Inflector 的东西——它“只是”将英语名词复数和单数化。在整个框架中被 Cake 的命名约定所使用。'

结合约定和一些关键原则,Cake 可以告诉哪个类绑定到哪个其他类。

因此,控制器中的$this->model 将是与此控制器直接关联的模型。 例如,在 UsersController 中,$this->model 将是 User 模型。

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

$this->Post->findAll();

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多