我正在使用 PEAR PHP_Beautifier 尝试格式化大量遗留代码,并实现数组元素的特定格式化。
我写了一个自定义过滤器:
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”之后的下一个标记,或者跳过它以便我可以处理过滤器中的左括号?
最佳答案
这行 $this->oBeaut->addNewlineIndent();
不是导致换行的原因吗,不应该将其删除或更改为其他方法吗?
建议:
<?php
if (($this->oBeaut->getNextTokenContent(1) === '(') && ($this->oBeaut->getNextTokenContent(2) !== ')')) {
$this->oBeaut->add($sTag);
} 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);
}
关于php - 抑制 PHP_Beautify 中的下一个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14034589/