Netbeans& PHP; class_alias和代码完成

时间:2011-07-05 17:00:36

标签: php netbeans alias code-completion

快一点;用于PHP开发的Netbeans 7.0:

有没有办法在class_alias被用来为别名设置别名时通知NetBeans,从而触发别名的代码完成?

class Foo{
    public static $hello = 'world';
}

class_alias('Foo', 'Bar');

Bar::$h // triggers code completion for $hello
       ^

我仍然在努力变得熟练使用NetBeans,并且没有真正使用配置,所以我希望有一些我可以修改的项目特定配置。

先谢谢你们。


有趣的是,我可以 不能 参见下面的而是使用命名空间的use虽然我的项目不然无名称空间)以实现NetBeans将理解的内容:

class Foo{
    public static $hello = 'world';
}

use \Foo as Bar;

Bar::$h // DOES trigger code completion for $hello
       ^

我不知道这是否是一个可行的解决方案。我的Loader类还包含alias => classname的映射,当给定的类自动加载时,load方法会在必要时搜索映射和别名。

这不会像预期的那样有效,因为use完全不适合任何类型的动态别名:

  • 不能在全局以外的任何范围内使用,函数或方法中的use会发出解析错误。
  • use不支持动态命名; use \{$class} as {$alias};是非法的。
  • 最重要的是use不执行文件包含,从而使其使用......好吧,没用。本利tastic。

2 个答案:

答案 0 :(得分:6)

我设法为此

创建了一些解决方法

在项目的引导程序中,您可以创建别名

class_alias('Some\Namespaced\ClassName', 'aliasName');
class_alias('Some\Namespaced\ClassName2', 'anotherAlias');

为了让Netbeans选择它,你可以在项目的某个地方创建一个虚拟文件。 例如。 aliases.php

class aliasName extends \Some\Namespaced\ClassName{}
class anotherAlias extends \Some\Namespaced\ClassName2{}

Extend并不直接等同于class_alias,但是出于代码提示的目的,它可以正常工作。

重要!实际上不要将此文件包含在项目的任何位置,仅存在此文件将允许Netbeans生成代码提示。

答案 1 :(得分:2)

不,对不起,我认为没有。

我必须说class_alias对我来说是新的!