【问题标题】:How to use a $this reference inside PHP docblocks如何在 PHP 文档块中使用 $this 引用
【发布时间】:2020-06-12 11:05:13
【问题描述】:

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

Helper 类已附加在某些视图中,用法如下:

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

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

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

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

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

【问题讨论】:

    标签: php phpstorm phpdoc docblocks


    【解决方案1】:

    这是不可能的,你应该输入提示$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 **/
    

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

    【讨论】:

    • IDE 有没有办法知道它适用于每个带有 phtml 扩展名的文件?
    • 我想有可能以某种方式使用 phpstorm 的内部结构,但我不知道该怎么做。我对 Symfony 有很好的支持,我不需要任何类型提示。
    • “IDE 有没有办法知道它适用于每个带有 phtml 扩展名的文件?” 如果您要编写这样的插件,那么是的,您可以注入/为所有此类文件声明一些东西。但是 PhpStorm 没有这样的功能供用户在任何项目中使用(所以你必须在每个 .phtml 文件中有/** @var $this MyClass */ 类型的注释)。
    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 2019-11-24
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多