为了账号安全,请及时绑定邮箱和手机立即绑定

在自定义类中访问 CakePHP $this

在自定义类中访问 CakePHP $this

PHP
慕婉清6462132 2023-09-08 22:00:11
我有自己的类foo,/src/Utility/foo.php只要我添加,就可以在任何 CakePHP 脚本中访问它use App\Utility\foo;- 到目前为止,这是可行的。$this将调用者实例的对象传递给 PHP 构造函数通常不会出现问题。为了获得准确的实例名称,$this我使用 . 在类的构造函数中检索了它get_class($this)。这返回AdminLTE\View\AdminLTEView我用 实例化我的自定义类$fooInstance = new foo($this);。我的类的构造函数如下所示:public function __construct(AdminLTE\View\AdminLTEView $appThis)使用上述语法会导致此错误:传递给 App\Utility\foo::__construct() 的参数 1 必须是 App\Utility\AdminLTE\View\AdminLTEView 的实例,给定 AdminLTE\View\AdminLTEView 的实例当我没有在构造函数中设置类型时,$this尝试此命令时会收到以下 CakePHP 错误消息$appThis->request->getAttribute('identity');:无法找到 requestHelper。好的,我误解了什么,我错过了什么,正确的语法如何,以便我可以$this在自定义类中使用调用者类?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

get_class()返回已解析的名称(解析在编译时发生),并且已解析的名称没有前导反斜杠,未解析的完全限定名称但始终以反斜杠开头:

\AdminLTE\View\AdminLTEView

https://php.net/manual/en/language.namespaces.rules.php

View::$request是一个受保护的属性,您无法访问视图类的范围之外的内容,您必须使用其公共getRequest()方法:

$appThis->getRequest()->getAttribute('identity');

访问未定义的属性将导致视图的魔术帮助程序加载器启动,以便您可以$this->Html在视图/模板中执行操作,以触发与该名称匹配的相应帮助程序的延迟加载,即HtmlHelper.


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 51 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信