我有自己的类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
.
- 1 回答
- 0 关注
- 72 浏览
添加回答
举报
0/150
提交
取消