首页 > 解决方案 > 如何在 PHP 文档块中使用 $this 引用

问题描述

我有一个使用 MVC 的项目,其中视图文件正在继承$this,它指的是附加到控制器的视图类。

一些视图中附加了辅助类,使用如下:

<?=$this->someHelper->renderSomething()?>

我希望通过这样做来帮助开发人员和 IDE:

/** @var SomeHelper $this->someHelper */

貌似不支持。有没有办法做到这一点?

我目前只能找到一种解决方法,将帮助程序声明为新变量并为此包含 @var 语句。

标签: phpphpstormphpdocdocblocks

解决方案


这是不可能的,你应该输入提示$this。如果$this不是任何您可以输入提示的具体类,请创建一个假类/接口来代替它作为 IDE 的帮助器:

// somewhere outside of your code base, but accessible by the IDE
// use the name of your choice
interface CodeIgniterMvc
{
    /**
     * @return string
     */
    function renderSomething(): string;

    /**
     * @param array $filter Filtering conditions
     * @return \Your\App\Models\User[]
     */
    function getUsers(array $filter): array;
}

在意见中:

/** @var $this CodeIgniterMvc **/

当然包括在存储库中,这样每个团队成员都可以获得这样的好处。


推荐阅读