PHPStorm. 代码重构。链式方法调用换行

11

我对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');

当我选择第四个时,我会得到:

    $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');
1个回答

4
为了获得所需的自动格式设置,请使用以下设置:
  1. 编辑器>代码样式 - 右边距(列)- 120 [截屏]
  2. 编辑器>代码样式> PHP>换行和括号(选项卡) - 链式方法调用 - 如果太长,则切断 [截屏]
注意:要获得此类所需的自动格式设置:
$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列,因此不会触发自动格式化规则。


谢谢您的回复,但是如果我们有长链 - 每个函数必须从新行开始。 - zhartaunik
嗨@zhartaunik。我的答案中的配置将自动按照问题“期望结果”部分所描述的方式格式化代码。您的评论让我对自动格式化的预期结果感到困惑。也许您应该尝试使用这个配置。 - svet
如果我们使用您的方法重新格式化代码后,将会得到以下结果:http://s015.radikal.ru/i332/1710/78/5ff9482868a8.png - zhartaunik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接