12

我对 phpstorm 代码重新格式化有一些疑问。

我有长线和单线。

$this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

我想配置设置:

代码风格 / PHP / 包装和大括号 / 链式方法调用

此设置有 4 个变体:

Do not wrap (1)
Wrap if long (2)
Crop down if long (3)
Wrap always (4)

当我选择 2 或 3 时,我有以下内容:

    $this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join(
        'some_code_here'
    )->join('some_code_here');
    $this->getSelect()->join('some_code_here')->join('some_code_here');

当我选择第 4 名时,我有:

    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here');
    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here');

我的问题是:

只有当方法很长(超过 120 个符号)时,是否有可能从新行包装每个调用。

预期结果:

    $this->getSelect()
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here')
        ->join('some_code_here');
    $this->getSelect()->join('some_code_here')->join('some_code_here');
4

1 回答 1

4

要获得所需的自动格式化,请使用以下设置:

  1. 编辑器 > 代码样式 -右边距(列) - 120 [ screenshot ]
  2. Editor > Code Style > PHP > Wrapping and Braces (tab) - Chained method calls - Chop down if long [ screenshot ]

注意:要获得所需的自动格式,如下所示:

$this->getSelect()
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here')
    ->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

您应该从比右边距更长的链接方法调用开始(即在您的示例中为 120)

$this->getSelect()->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

如果您使用长度小于 120 列的链式方法调用自动格式化,则规则不会触发,即这个

$this->getSelect()
    ->join('some_code_here')->join('some_code_here')->join('some_code_here')
    ->join('some_code_here')->join('some_code_here');
$this->getSelect()->join('some_code_here')->join('some_code_here');

不会触发自动格式化规则,因为链接的方法调用不超过 120 列

于 2017-10-09T16:32:28.043 回答