PhpStorm 完成,类型提示泛型

Posted

技术标签:

【中文标题】PhpStorm 完成,类型提示泛型【英文标题】:PhpStorm completion, type hint generic 【发布时间】:2019-03-08 21:05:57 【问题描述】:

我很想为 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();

因此,为了自动完成和静音 PhpStorm 警告,我必须在每个 getManager() 调用相应的类之后添加该行。

/** @var DateTime $dtClass */

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

    /**
     * @template T
     * @param string $class <T>
     * @return <T>
     */
    public function getManager(string $class)
     

【问题讨论】:

confluence.jetbrains.com/display/PhpStorm/… 正是这样做的。您可以查看 Laravel IDE 帮助程序(composer 包;也有预生成的文件),它为 Laravel 执行此操作,并为自己手动制作此类文件。 【参考方案1】:

天哪!非常感谢@LazyOne ?

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

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

<?php

namespace PHPSTORM_META 
    override(
        \Factory::getManager(0),
        map([
            '' => '@',
        ])
    );

等等!

【讨论】:

别忘了接受你自己的答案:在搜索结果中更引人注目;更容易为其他用户找到有效的解决方案。

以上是关于PhpStorm 完成,类型提示泛型的主要内容,如果未能解决你的问题,请参考以下文章

phpstorm使用技巧

PhpStorm 中的扩展运算符

phpstorm 生成带有类型提示的设置器

PhpStorm - 类型提示差异

PHPStorm 类型提示不同类型的数组

Netbeans 和 PHPStorm 中的变量类型提示