如何在 PHP 文档块中使用 $this 引用

How to use a $this reference inside PHP docblocks

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

Helper classes 已附加在某些视图中并按如下方式使用:

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

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

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

貌似不支持。有办法实现吗?

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

不可能,您应该键入 $this 提示。如果 $this 不是任何具体的 class 你可以输入提示,创建一个假的 class/interface 作为 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 **/

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