8

假设我在 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

4 回答 4

1

简短的回答,这是不可能的,你想要的方式。

正如您已经在另一条评论中正确指出的那样,您应该@var手动使用来实现代码完成的好处,因为编辑器本身不可能理解编程模式的概念

尽管在理论上是可行的,但手动编写类型推断的规则似乎倒退了恕我直言(更不用说对 Docblock 表示法本身进行必要的更改了)。

于 2013-01-17T08:44:30.123 回答
1

唯一支持此功能的 IDE 是 PHPStorm(通过 .phpstorm.meta.php 文件)。

我提交了一个功能请求,要求支持这一点。您可以在https://bugs.eclipse.org/bugs/show_bug.cgi?id=463110为它投票

于 2015-12-10T11:38:24.487 回答
0

Currently, I'm not aware of an IDE/Editor that does this either, but I'm keeping track of the same functionality for PhpStorm (they're currently 'working' on it): http://youtrack.jetbrains.com/issue/WI-6027

于 2013-01-26T15:20:22.763 回答
0

我使用 eclipse 和 pdt 近 3 年多了,但对你的问题没有完美的答案

我认为 Zend Studio 9 可以解决你的问题,对于代码完成它比 pdt 好得多。

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

于 2013-01-11T06:22:11.053 回答