PhpStorm переопределение многострочных функций

В настоящее время я пытаюсь настроить PhpStorm для создания полностью совместимого с PSR-2 кода, однако его средство форматирования срабатывает на длинных строках, которые содержат функции с несколькими параметрами.

Когда я запускаю форматтер, он конвертирует это:

return ($thisIsALongLine || functionCall($arg1, $arg2));

в это:

return ($thisIsALongLine || functionCall(
        $arg1,
        $arg2
    ));

Однако то, что я хочу, это:

return ($thisIsALongLine || functionCall(
    $arg1,
    $arg2
));

Кто-нибудь знает, какой параметр форматирования говорит ему для дальнейшего отступа многострочных вызовов функций в этом случае?

Примечание: как правило, я бы отформатировал выше, как это:

return ($thisIsALongLine
    || functionCall($arg1, $arg2));

Тем не менее, это просто обходит дополнительную проблему с отступами, которую мне еще нужно исправить в других ситуациях.

Редактировать: это состояние Wrapping and Braces, как этого требует @LazyOne ниже:

Упаковка и брекеты, часть 1 Упаковка и брекеты, часть 2

Редактировать 2: Примеры двух разных типов строк, которые форматер PhpStorm обрабатывает неправильно. (Отказ от ответственности: это старый код из устаревшей системы.)

Во-первых, это:

if ($validateBudget && $this->getFinancialPeriodService()->validateBudget($formModel->action, $formModel->estimatedBudget, $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {

становится так:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget($formModel->action, $formModel->estimatedBudget,
        $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {

когда я ожидал бы это на основе настроек выше:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget(
        $formModel->action,
        $formModel->estimatedBudget,
        $formModel->startDate,
        $formModel->endDate,
        $formModel->isFirstPeriod
    )
) {

Во-вторых, если вы включите выравнивание для цепных методов, то это:

if ($evaluation->getExpert() != NULL && ($evaluation->getExpert()->getStatusId() == Evaluation::STATUS_ASSIGNED || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage1StartDate()) == false || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage2StartDate()) == false)) {

переформатирован к этому:

if ($evaluation->getExpert() != null && ($evaluation->getExpert()
                                                    ->getStatusId() == Evaluation::STATUS_ASSIGNED || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED && CoreDateUtils::dateIsPast($proposal->getCalendar()
                                                                                                                                                                                                            ->getStage1StartDate()) == false || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS && CoreDateUtils::dateIsPast($proposal->getCalendar()
                                                                                                                                                                                                                                                                                                                                                            ->getStage2StartDate()) == false)) {

когда я ожидал этого:

if ($evaluation->getExpert() != null
    && ($evaluation->getExpert()->getStatusId() == Evaluation::STATUS_ASSIGNED
    || $evaluation->getEvaluationStage() == Evaluation::STAGE_PROPOSED
    && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage1StartDate()) == false
    || $evaluation->getEvaluationStage() == Evaluation::STAGE_IN_PROGRESS
    && CoreDateUtils::dateIsPast($proposal->getCalendar()->getStage2StartDate()) == false)
) {

Если честно, на данный момент я подозреваю ошибку в форматере, поэтому открою тикет с JetBrains, однако я оставлю это открытым, если кто-нибудь знает, почему он переоценивает / занижает вещи.

0 ответов

Другие вопросы по тегам