4
我正在使用PEAR PHP_Beautifier尝试格式化大量遗留代码,并实现数组元素的特定格式。在PHP_Beautify中抑制下一个令牌
我写了一个自定义过滤器:
class PHP_Beautifier_Filter_ArrayIndent extends PHP_Beautifier_Filter
{
public function t_array($sTag)
{
if (($this->oBeaut->getNextTokenContent(1) === '(') &&
($this->oBeaut->getNextTokenContent(2) !== ')')) {
// Don't use for Array type hinting
// Don't use for Empty array definition
$this->oBeaut->add($sTag);
$this->oBeaut->addNewlineIndent();
} elseif ($this->oBeaut->getNextTokenContent(2) !== ')') {
// Ensure a space after type hinted array before argument name
$this->oBeaut->add($sTag . ' ');
} else {
// Empty array definition
$this->oBeaut->add($sTag);
}
}
}
我试图让下面的格式(与在同一行的“阵列”左大括号):
public function doSomething(array $params = array()) {
$dummy1 = array();
$dummy2 = array (
'Hello' => 'World',
'Goodnight' => 'Vienna'
);
}
但我发现:
public function doSomething(array $params = array()) {
$dummy1 = array();
$dummy2 = array
(
'Hello' => 'World',
'Goodnight' => 'Vienna'
);
}
是否有修改/抑制“t_array”后的下一个标记,或跳过它,这样任何方式我可以在我的过滤器中处理左花括号?
我不知道的东西美化,但不会此行'$这个 - > oBeaut-> addNewlineIndent();'是什么原因造成的新的生产线,不该它会被删除或更改为不同的方法? –
不幸的是,使用直线$ this-> oBeaut-> addIndent();保持“(”与“数组”相同的行,但给了我一个长(6空格)“阵列”和“(”...之间的缩进,没有添加缩进方法调用,我没有得到任何缩进数组值 –
虽然你让我想:再看看我做了什么,如果(($ this-> oBeaut-> getNextTokenContent(1)==='(')&&($ this-> oBeaut- > getNextTokenContent(2)!==')')){ $ this-> oBeaut-> add($ sTag); } elseif($ this-> oBeaut-> getNextTokenContent(2)!==')') {//确保在参数名称之前键入提示阵列之后的空格 $ this-> oBeaut-> add($ sTag。''); } else { //空阵列定义 $ this-> oBeaut-> add ($ sTag); } 实际上给了我我需要的东西......作为回答发布为赏金 –