PhpStorm 完成,类型提示泛型

Ars*_*nik 5 generics phpdoc type-hinting phpstorm

我很想找到一种方法(如果这甚至可能?)让 PhpStorm 自动完成我的Factory类生成的代码,而不必每次我从中提取类时都编写 PHPDoc。

这是我的代码:

<?php
class Factory
{
    public function getManager(string $class)
    {
        // if in cache ... returns

        // not in cache > init
        $manager = new $class();
        $this->doStuff($manager);
        return $manager;
    }

    public function doStuff($manager) {}
}

$factory = new Factory();
/** @var DateTime $dtClass */
$dtClass = $factory->getManager(DateTime::class);
$dtClass->getTimestamp();
Run Code Online (Sandbox Code Playgroud)

因此,为了自动完成并消除 PhpStorm 警告,我必须在每次getManager()调用相应类后添加该行。

/** @var DateTime $dtClass */
Run Code Online (Sandbox Code Playgroud)

我想知道 PHPDoc、PhpStorm 帮助文件或任何东西是否可以帮助做到这一点?

    /**
     * @template T
     * @param string $class <T>
     * @return <T>
     */
    public function getManager(string $class)
    { 
Run Code Online (Sandbox Code Playgroud)

Ars*_*nik 6

我的天啊 !非常感谢@LazyOne

我不敢相信只有 10 行代码就可以为我节省这么多时间

所以这里是一个快速的总结。只需在项目的根目录下创建一个文件夹 .phpstorm.meta.php。在里面创建一个manager.meta.php 只包含:

<?php

namespace PHPSTORM_META {
    override(
        \Factory::getManager(0),
        map([
            '' => '@',
        ])
    );
}
Run Code Online (Sandbox Code Playgroud)

等等!

  • 不要忘记接受你自己的答案:在搜索结果中更引人注目;更容易为其他用户找到工作解决方案。 (2认同)