gpt4 book ai didi

cakephp - cakePHP 命名约定如何工作?

转载 作者:行者123 更新时间:2023-12-04 16:32:03 28 4
gpt4 key购买 nike

我对 PHP 比较陌生。开始学习 PHP,但后来遇到了 cakePHP,它可以加快开发时间。

阅读文档和博客教程后,我仍然不明白命名约定。我想在我开始做一些例子之前我不会知道,但是为了让我开始,有人可以向我解释 cakePHP 如何将数据库表关联到 Controller /模型层吗?

下面的代码是教程的摘要。它是一个将 post id 传递给 View 层的 Controller 方法。数据库表称为“posts”。 $this->Post 指的是Post的模型类,与数据库中post的复数形式相关。

public function view($id = null) {
$this->Post->id = $id;
$this->set('post', $this->Post->read());
}

好的,我明白了。然后,在文档中它指的是以下相关性:

ReallyBigPerson 和really_big_people

所以看起来相关性实际上遵循英语语义中的规则。这是否意味着 cakePHP 有一个隐藏在它工作的地方的单复数词列表?例如,我可以在不破坏代码的情况下使用以下相关性吗?

这个和这些 男人和男人 足和足驼鹿和驼鹿 鹅鹅

此外,如果我的数据库中有单数和复数形式的表,它会破坏代码,还是只会关联到复数形式的表?

只是觉得它莫名其妙......为什么他们不能像 for like 这样的命名约定匹配前缀?

最佳答案

反射器
CakePHP 使用它的 Inflector类来确定事物的复数。
由于命名约定规定模型名称是单数而表名称是复数,因此它使用变形器来应用英语语义/规则来确定复数。
如果您需要一些帮助来理解 Inflector 的输出,您可以使用 CakePHP inflector website .
复数例子

Model name: Post
Table name: posts

Model name: User
Table name: users

Model name: Sheep
Table name: sheep

Model name: News
Table name: news

Model name: Radius
Table name: radii
检查 Inflector 站点以确保。
非标准表名
虽然 CakePHP 提供了一套用于命名和约定的标准规则集,但它们都不是一成不变的。如果要更改用于特定模型的表的名称,只需在模型中指定表名称:
class Thing extends AppModel {
public $useTable = 'somethings';
}
或者,如果您想要一个不使用表格的模型:
class Post extends AppModel {
public $useTable = null;
}

关于cakephp - cakePHP 命名约定如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11876170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com