在自定义类中访问 CakePHP $this

我有自己的类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在自定义类中使用调用者类?


慕婉清6462132
浏览 74回答 1
1回答

拉丁的传说

get_class()返回已解析的名称(解析在编译时发生),并且已解析的名称没有前导反斜杠,未解析的完全限定名称但始终以反斜杠开头:\AdminLTE\View\AdminLTEViewhttps://php.net/manual/en/language.namespaces.rules.phpView::$request是一个受保护的属性,您无法访问视图类的范围之外的内容,您必须使用其公共getRequest()方法:$appThis->getRequest()->getAttribute('identity');访问未定义的属性将导致视图的魔术帮助程序加载器启动,以便您可以$this->Html在视图/模板中执行操作,以触发与该名称匹配的相应帮助程序的延迟加载,即HtmlHelper.
打开App,查看更多内容
随时随地看视频慕课网APP