gpt4 book ai didi

cakephp - 如何从 Controller 访问模型类?

转载 作者:行者123 更新时间:2023-12-01 23:42:43 25 4
gpt4 key购买 nike

CakePHP 2.x

我试图理解别人代码中 AppController 中的 2 行:

 // set the Session data as static values, in the model
if(isset($this->{$this->modelClass}) && method_exists($this->{$this->modelClass}, 'setSessionInfo'))
$this->{$this->modelClass}->setSessionInfo($this->Session->read());

$this->{$this->modelClass} 会返回什么?显然它指的是 AppModel 类,但属性 modelClass 并未在 AppController 或整个应用程序的任何位置设置。符号“$this->modelClass”几乎用在应用程序的每个 Controller 中。鉴于 modelClass 不是 CakePHP 保留变量的一部分,代码如何工作?

谢谢。

最佳答案

引用来源

modelClass是一个标准的 Controller 类属性,即 set automatically based on the controller class name .在内部它用于了解 default model name用于类加载。

在应用程序 Controller 中引用 modelClass 是一种相对常见的技术,它允许继承的代码知道并使用给定 Controller 的主模型名称。因此在应用程序 Controller 中编写这样的代码:

$this->{$this->modelClass}->

当用户 Controller 执行时会像这样解释:

$this->User->

或者由产品 Controller 执行:

$this->Product->

等等

$this->modelClass is used almost in every controller of the application

很常见;因为对于给定的 Controller ,要引用的 modelClass 不会改变。使用类属性而不是模型名称只是增加了一些间接性 - 可能为了您的兴趣,在特定 Controller 中删除这种用法。

关于cakephp - 如何从 Controller 访问模型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046968/

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