CakePHP 的 UsersController 中的 $this->User 引用是啥?

Posted

技术标签:

【中文标题】CakePHP 的 UsersController 中的 $this->User 引用是啥?【英文标题】:What is $this->User a reference to within the UsersController in CakePHP?CakePHP 的 UsersController 中的 $this->User 引用是什么? 【发布时间】:2010-11-03 05:16:44 【问题描述】:

如果你在 UsersController 中,$this->User 语句 $this->User->find('all'); 的部分有什么作用?

$this 引用的是什么?它是某事的一个实例吗?在这种情况下,当前对象是什么?

【问题讨论】:

你真的应该听从你在 15 分钟前发表的帖子中给出的建议,并阅读关于对象的 php 文档。标记***.com/questions/999307/meaning-of-this-in-cakephp的精确欺骗 我在 UsersController 的实例中专门询问 CakePHP。 $this 指的是某些东西! 它指的是 UsersController 类...如果没有基本了解 PHP 中的面向对象编程语法,您不应该尝试编写 CakePHP 代码。 所以你的意思是它不是那个类的实例。例如在 Java 中,当你使用 this 时,它指的是类的一个实例,而不是类本身。 这里指出:***.com/questions/151969/php-self-vs-this,对类的引用不应该使用 self 吗? 【参考方案1】:

来自CakePHP Manual - Beginning with Cake

本手册假定您对 PHP 有一般的了解,并对面向对象编程 (OOP) 有基本的了解。

网络上有数以千计的网站会向您解释 OOP 和 PHP。这是两个随机的。

Objected Oriented Programming 和Object Oriented Programming with PHP

$this // is the current class
$this->User // is the calling the Model User 

【讨论】:

【参考方案2】:

Cake 中的默认行为是自动将模型与每个控制器关联起来。约定是关联模型将是控制器名称的单数,因此 UsersController 将自动加载名为 User 的模型,PeopleController 将自动加载名为 Person 的模型。像这样自动加载的模型然后可以作为控制器对象的属性使用。

您可以通过将控制器对象的 $uses 属性设置为包含您要加载的模型名称的数组来选择为控制器自动加载哪些模型,尽管由于性能问题,这通常被认为是不好的做法。

如果您不希望将任何模型与您的控制器关联,您也可以将 $uses 属性设置为 false。

要稍后在您的控制器中加载模型实例,您可以调用 $this->loadModel('Cow') 并且 $this->Cow 现在将包含对您的 Cow 模型的引用。

【讨论】:

以上是关于CakePHP 的 UsersController 中的 $this->User 引用是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用单独的Controller名称空间时CakePHP 3路由

CakePHP 登录后重定向到当前页面

Cakephp:将 AppController 抽象到另一个层次,可能吗?

CakePHP 3外键在视图中

访问 cakephp3 控制器中的非关联表

Angular JWT Auth - 总是 401 未经授权