4

我正在尝试在 NetBeans (7.3) 中将代码模板功能与 PHP 一起使用,但我发现它相当有限。给定以下所需的输出:

public function addFoo(Foo $foo) { 
    $this->fooCollection[] = $foo;
}

我试图让“ foo”/“ Foo”的每个实例都是可变的;所以我使用了一个变量:

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

当然,扩展时没有考虑到所需的大小写规则,因为我找不到实现它的方法;结果是(假设我填充${name}了“ Foo):

public function addFoo(Foo $Foo) { // note the uppercase "Foo" in the argument
    $this->FooCollection[] = $Foo; // and collection property names...
}                                  // not what I had in mind

现在,我读到 NetBeans 在它的模板中支持FreeMarker,但这似乎只适用于文件模板而不是像这样的片段模板。

据我所知,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 支持

4

0 回答 0