PhpStorm 中结构替换中的重复

问题描述 投票:0回答:1

我正在开发一个相当老的项目,我想做一些小的重构。

我有一个 if 语句,条件如下

if ($a == 1 || $a == 2 || b == 3)

我想用

替换它(或者最好写一份检查)
if (in_array($a, [1, 2, 3]))

我可以编写结构替换来获得确切的比较次数

if ($VAR$ == $VALUE1$ || $VAR$ == $VALUE2$)

但是这个过程中是否有可能以某种方式涉及重复?有时有一个 ||运算符,有时有三个或更多...

我想到的唯一解决方案是为不同数量的操作员制定更多意图。但我相信有比这更好的解决方案。

phpstorm jetbrains-ide structural-search
1个回答
0
投票

尝试展开。这个想法是将 VALUE 增量移动到 in_array 调用中:

in_array($a, [1]) || $a == 2 || $a == 4
in_array($a, [1, 2]) || $a == 3 || $a == 4
in_array($a, [1, 2, 3]) || $a == 4
in_array($a, [1, 2, 3, 4])

因此搜索模板将是:

in_array($a$, [$vals$]) || $a$ === $val$

(其中

$vals$
计数 = [0,无限制])

替换模板:

in_array($a$, [$vals$, $val$])

(您仍然需要为基本案例编写搜索模板)

现在,在替换窗格中,重复按重新运行 (Ctrl+F5) 和全部替换。

© www.soinside.com 2019 - 2024. All rights reserved.