PhpStorm过缩进多行函数
我目前正在尝试配置PhpStorm,以生成完全符合PSR-2的代码,但是它的格式化程序在包含多个参数的函数的长线上出错 当我运行格式化程序时,它会转换以下内容:PhpStorm过缩进多行函数,phpstorm,phpstorm-2017.2,Phpstorm,Phpstorm 2017.2,我目前正在尝试配置PhpStorm,以生成完全符合PSR-2的代码,但是它的格式化程序在包含多个参数的函数的长线上出错 当我运行格式化程序时,它会转换以下内容: return ($thisIsALongLine || functionCall($arg1, $arg2)); 为此: return ($thisIsALongLine || functionCall( $arg1, $arg2 )); 然而,我想要的是: return ($thisIsAL
return ($thisIsALongLine || functionCall($arg1, $arg2));
为此:
return ($thisIsALongLine || functionCall(
$arg1,
$arg2
));
然而,我想要的是:
return ($thisIsALongLine || functionCall(
$arg1,
$arg2
));
有人知道哪个格式化程序选项告诉它在这个实例中进一步缩进多行函数调用吗
注:通常,我会将上述格式设置为:
return ($thisIsALongLine
|| functionCall($arg1, $arg2));
然而,这只是绕过了额外的缩进问题,对于其他情况,我仍然需要解决这个问题
编辑:这是@LazyOne要求的包装和大括号状态:
编辑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)
) {
老实说,现在我怀疑格式化程序中有一个bug,所以我会用JetBrains打开一张罚单,不过我会把这个打开,以防有人知道它为什么会对事情进行过/欠格式化。基于意见的评论:我发现所有这些格式化都不好。保持回路线短,而不是引入一个额外的变量。我认为返回应该放在一行中,我会把
functionCall()
放在一个额外的变量中。虽然我同意,它也会做很长时间的if语句
,这实际上是导致我发布问题的原因,但是我看到的是一个返回语句,它在写文章时一直在反格式化。不管怎样,它仍然令人恼火,在这个特定的例子中,围绕它编码并不是我真正想要的修复方法,即使这是我通常会做的事情。:)(这是在重构过程中重新格式化其他人的代码。)1)您是否尝试过导入内置PSR-1/2设置?理论上,他们应该在默认情况下将其全部设置好。2) 显示您的代码样式设置--“包装和大括号”选项卡。@LazyOne是的,是我尝试的第一件事,不幸的是,它没有改变任何东西。:/我现在回家了,但是我会在早上添加一个屏幕截图,假设从现在到那时这段时间没有关闭。我还将我的if
语句放在一行上,特别是以$is
作为前缀的布尔值,就像if($isValid&$isconfirm)
。无论如何,这不是直接的解决方案,祝您好运:)直接联系intellij也可能有帮助。