Netbeans&;PHP;class_alias和代码完成


Netbeans & PHP; class_alias and code-complete

快速一个;用于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不进行文件包含,从而使其使用。。。嗯,没用。朋克风格

我设法为这个创建了一个变通方法

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

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就可以生成代码提示。

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

我不得不说class_alias对我来说是一个新的!