PHPStorm. Переформатировать код. Обёртка вызова цепочечного метода

У меня есть несколько вопросов относительно переформатирования кода 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');

person zhartaunik    schedule 01.07.2015    source источник


Ответы (1)


Для получения желаемого автоформатирования используйте следующие настройки:

  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 столбцов

person svet    schedule 09.10.2017
comment
Спасибо за ответ, но если у нас длинная цепочка - каждая функция должна начинаться с новой строки. - person zhartaunik; 10.10.2017
comment
Привет @zhartaunik. Конфигурация из моего ответа автоматически отформатирует код точно так, как описано в разделе «Ожидаемый результат» вопроса. Своим комментарием вы сбиваете меня с толку относительно ожидаемого конечного результата автоформатирования. Возможно, вам стоит попробовать эту конфигурацию. - person svet; 13.10.2017
comment
Если мы воспользуемся вашим подходом, то после переформатирования кода мы получим следующее: /i332/1710/78/5ff9482868a8.png - person zhartaunik; 13.10.2017