PhpStorm 完成,类型提示通用
PhpStorm completion, type hint generic
我很想找到一种方法(如果可能的话?)让 PhpStorm 自动完成由我的 Factory
class 生成的代码,而不必在我每次拉 class 来自它。
这是我的代码:
<?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()
调用后添加该行,并使用相应的 class.
/** @var DateTime $dtClass */
我想知道 PHPDoc、PhpStorm 帮助程序文件或任何东西是否可以帮助做到这一点?
/**
* @template T
* @param string $class <T>
* @return <T>
*/
public function getManager(string $class)
{
天哪!非常感谢@LazyOne
我不敢相信仅仅 10 行代码就可以节省我这么多时间
所以这里是一个快速的总结。
只需在项目的根目录下创建一个 文件夹 .phpstorm.meta.php
。
在里面创建一个 manager.meta.php
仅包含:
<?php
namespace PHPSTORM_META {
override(
\Factory::getManager(0),
map([
'' => '@',
])
);
}
瞧瞧!
我很想找到一种方法(如果可能的话?)让 PhpStorm 自动完成由我的 Factory
class 生成的代码,而不必在我每次拉 class 来自它。
这是我的代码:
<?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()
调用后添加该行,并使用相应的 class.
/** @var DateTime $dtClass */
我想知道 PHPDoc、PhpStorm 帮助程序文件或任何东西是否可以帮助做到这一点?
/**
* @template T
* @param string $class <T>
* @return <T>
*/
public function getManager(string $class)
{
天哪!非常感谢@LazyOne
我不敢相信仅仅 10 行代码就可以节省我这么多时间
所以这里是一个快速的总结。
只需在项目的根目录下创建一个 文件夹 .phpstorm.meta.php
。
在里面创建一个 manager.meta.php
仅包含:
<?php
namespace PHPSTORM_META {
override(
\Factory::getManager(0),
map([
'' => '@',
])
);
}
瞧瞧!