eclipse pdt中的代码完成和工厂模式

时间:2013-01-08 18:27:56

标签: php eclipse factory code-completion eclipse-pdt

假设我在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要在内存中替换。

4 个答案:

答案 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好得多。

http://www.zend.com/en/products/studio/downloads

答案 3 :(得分:0)

目前,我不知道IDE /编辑器是这样做的,但我正在跟踪PhpStorm的相同功能(他们目前正在“工作”): http://youtrack.jetbrains.com/issue/WI-6027