php - 抑制 PHP_Beautify 中的下一个标记

标签 php indentation php-beautifier

我正在使用 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/

相关文章:

javascript - 基于缩进的语法 -> AST

python - for循环中嵌套if语句中的特定缩进错误

php - 如何修复 PHP_Beautifier 的空行?

php - 安装 Sphinx 时出错需要 libmysqlclient.so.16(libmysqlclient_16)(64 位)

javascript - 内容正确但 Json 格式错误

php - 使 PHP 始终以 JSON 进行响应,即使在输出错误时也是如此

php - 无法在 PHP 中使用 Google Contacts API V3 创建联系人/群组

jquery - 将所选文本缩进 4 个空格