代码之家  ›  专栏  ›  技术社区  ›  Arsonik

phpsorm完成,类型提示通用

  •  0
  • Arsonik  · 技术社区  · 6 年前

    我想找个办法(如果可能的话?)以便phpsorm自动完成由my生成的代码 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();
    

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

    /** @var DateTime $dtClass */
    

    我想知道phpDoc、phpstorm帮助文件或其他什么文件是否可以帮助您做到这一点?

        /**
         * @template T
         * @param string $class <T>
         * @return <T>
         */
        public function getManager(string $class)
        { 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Arsonik    6 年前

    哦,我的上帝!非常感谢你@lazyone_

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

    所以这里有一个快速的总结。 创建一个 文件夹 .phpstorm.meta.php 在项目的根目录。 内部创建一个 manager.meta.php 仅包含:

    <?php
    
    namespace PHPSTORM_META {
        override(
            \Factory::getManager(0),
            map([
                '' => '@',
            ])
        );
    }
    

    ET Voice!