Netbeans和PHP; class_alias和代码完成

Dan*_*ugg 3 php alias netbeans code-completion

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

有没有办法通知NetBeans何时class_alias用于别名类,从而触发别名的代码完成?

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

class_alias('Foo', 'Bar');

Bar::$h // triggers code completion for $hello
       ^
Run Code Online (Sandbox Code Playgroud)

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

在此先感谢大家.


有趣的是,我 不能请参阅下文,而不是使用命名空间的use(虽然我的项目,否则命名空间免费),达到什么样的NetBeans将明白:

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

use \Foo as Bar;

Bar::$h // DOES trigger code completion for $hello
       ^
Run Code Online (Sandbox Code Playgroud)

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

这不会像希望的那样工作,use完全不适合任何类型的动态别名:

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

Die*_*itz 6

我设法为此创建了一些解决方法

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

class_alias('Some\Namespaced\ClassName', 'aliasName');
class_alias('Some\Namespaced\ClassName2', 'anotherAlias');
Run Code Online (Sandbox Code Playgroud)

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

class aliasName extends \Some\Namespaced\ClassName{}
class anotherAlias extends \Some\Namespaced\ClassName2{}
Run Code Online (Sandbox Code Playgroud)

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

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