假设我在PHP代码中有一个典型的工厂模式:
abstract class Model
{
function m()
{
}
}
class model_A
{
function a()
{
}
}
class model_B
{
function b()
{
}
}
function modelFactory($name)
{
$className = 'model_' . $name;
$object = new $className();
// ... do some magic stuff ...
return $object;
}
我知道@var和@return phpdoc标签,但是输入后有什么神奇的方式:
$x = modelFactory('A');
Eclipse会知道$ x是model_A的一个实例吗?
我可以在某处定义一个固定的字符串向量,如下所示:
"modelFactory('A')" => "new model_A()"
"modelFactory('B')" => "new model_B()"
在处理代码完成之前,Eclipse要在内存中替换。
答案 0 :(得分:1)
简短回答,这不可能以你想要的方式实现。
正如您已经在另一条评论中正确指出的那样,您应该手动使用@var
来实现代码完成的良好性,因为编辑器不可能自己理解编程模式的概念
虽然理论上可行,但是类型推断的手动创作规则似乎只是向后发展(更不用说Docblock表示法本身所需的更改)。
答案 1 :(得分:1)
唯一支持此功能的IDE是PHPStorm(通过.phpstorm.meta.php文件)。
我提交了一项要求支持此功能的功能请求。 您可以在https://bugs.eclipse.org/bugs/show_bug.cgi?id=463110
投票答案 2 :(得分:0)
我使用eclipse和pdt近3年以上,但对你的问题没有完美的答案
我认为Zend Studio 9可以解决您的问题,因为代码完成它比pdt好得多。
答案 3 :(得分:0)
目前,我不知道IDE /编辑器是这样做的,但我正在跟踪PhpStorm的相同功能(他们目前正在“工作”): http://youtrack.jetbrains.com/issue/WI-6027