Templates NetBeans代码模板扩展;字符串操作

Templates NetBeans代码模板扩展;字符串操作,templates,netbeans-7,freemarker,Templates,Netbeans 7,Freemarker,我试图在NetBeans(7.3)中使用PHP的特性,但是我发现它相当有限。给定以下期望输出: public function addFoo(Foo $foo) { $this->fooCollection[] = $foo; } 我试图使“foo”/“foo”的每个实例都是可变的;所以我使用了一个变量: public function add${name}(${name} $$${name}) { $this->${name}Collection[] = $$$

我试图在NetBeans(7.3)中使用PHP的特性,但是我发现它相当有限。给定以下期望输出:

public function addFoo(Foo $foo) { 
    $this->fooCollection[] = $foo;
}
我试图使“
foo
”/“
foo
”的每个实例都是可变的;所以我使用了一个变量:

public function add${name}(${name} $$${name}) {
    $this->${name}Collection[] = $$${name};
}
当然,当扩展时,没有考虑到所需的资本化规则,因为我找不到实现这一点的方法;结果是(给定我用“
Foo
”)填充
${name}

现在,我已经了解到NetBeans在其模板中支持,但这似乎只适用于文件模板,而不是像这样的片段模板

就我所知,FreeMarker版本看起来像下面这样;但是,它不起作用,
${name?capitalize}
只是被看作另一个变量名

public function add${name?capitalize}(${name?capitalize} $$${name}) {
    $this->${name}Collection[] = $$${name};
}
传递“
foo
”,允许大写字母对类型名、第二个单词等进行修正

这里有没有办法获得FreeMarker支持,或者有其他选择?

我真的愿意接受任何建议;包括第三方插件。我只是不想放弃NetBeans


附录

给出的例子微不足道;一个显而易见的解决方案是:

public function add${upperName}(${upperName} $$${lowerName}) {
    $this->${lowerName}Collection[] = $$${lowerName};
}
其中上/下分别为“
Foo
”/“
Foo
”。然而,这只是一个例子,我正在寻找更强大的东西(比如FreeMarker支持)

public function add${upperName}(${upperName} $$${lowerName}) {
    $this->${lowerName}Collection[] = $$${lowerName};
}