我刚刚开始尝试phpstorm.meta.php,以获取更好的代码提示。到目前为止,我发现的文档似乎有些薄,我无法使其正常工作。我正在运行PhpStorm 2019.1及以下版本。我是否需要刷新刷新并重新启动,或者提示应该在编辑元文件后立即起作用?
BasePB.php:
// sub-classes override this method to return the class name of entity they use
abstract protected function getEntityType()
private function entityFactory($type) : ModelEntity
{
return new $type($this, false);
}
public function getNewEntity($options = array())
{
$entityType = $this->getEntityType();
$res = $this->entityFactory($entityType);
$res->inject($options);
return $res;
}
.phpstorm.meta.php
<?php
namespace PHPSTORM_META
{
override(\LTEObjects\Base\BasePB::entityFactory(0), map(['' => '@']));
}
扩展BasePB的类中的某些其他文件
protected function getEntityType()
{
return '\Application\Model\SomeEntity'; //extends ModelEntity
}
public function someMethod(...)
{
// ...
$entity = $this->getNewEntity(array(...));
//PhpStorm recognizes $entity as a 'ModelEntity', not a 'SomeEntity'
// ...
}
元数据文件与代码文件位于同一模块中,而不是项目的根目录,但是即使我将其移至根目录也不起作用,并且从我阅读的内容来看,它应该能够可以存放在任何地方,仍然可以使用。
使用的字符串与将其转换为类的方法之间的距离太远了吗?