搜索模板、修饰符和脚本约束
当您构建结构搜索模板时,实际上是在编写脚本。 为简化您的脚本编写过程,PhpStorm 为您提供了一系列预定义的 搜索模板 ,您可以将其用作搜索模板的原型。

有关如何访问现有搜索和替换模板列表,请参阅 结构化搜索和替换部分。
有效的搜索或替换模板表示以下支持的语言结构之一:
表达式,例如
"John" . " " . "Doe"语句或语句序列,例如
$people[] = new Person('Trillian');类指示符,例如
class Engine implements IEngine行注释或块注释,例如
/** Created in PhpStorm */。
在搜索模板中,可以使用以下简化:
方法体可以省略。
模板和约束字段中使用短类名(而不是完全限定名)。
使用
class $Class$作为模板也可以找到匿名类。注释和文档注释的模板应包含具有正确注释和 PHPDoc/JSDoc 语法的变量和结构。
每个搜索或替换模板由变量 $variable_name$ 组成,您可以为其添加条件(修饰符)以缩小搜索结果。 修饰符取决于您搜索模板中的变量。

计数修饰符
计数 修饰符指定了出现的次数。
例如,在 class $a$ {public function $b$()} 搜索模板中,为 $b$ 变量在 计数 修饰符字段中指定最小值和最大值。 要设置无限的最大计数,请在修饰符字段中提供空值。

PhpStorm 添加 [0,∞] 到变量中并搜索指定范围的数字。
参考修饰符
参考 修饰符使您可以在变量中引用其他搜索模板。
引用将始终包含预配置或已保存模板的名称,您可以使用自动完成来填写此字段。
例如,您可以定义一个搜索模板来定位类的静态方法,然后在另一个模板中引用它,以检测对这些静态方法的错误实例调用。

类型修饰符
Type 修饰符为指定的变量添加了一个预期值或表达式类型。
使用以下修饰符值来定位对应类型的变量:
string"""
int或integer""""""
double或float"""booleanarraynull
要定位特定类的实例,请提供其 FQN,包括前导 \ 作为 Type 修饰符值。
例如,针对 $b$ 变量,请在 \ExampleClass 修饰符字段中键入 Type。
PhpStorm 搜索 ExampleClass 实例化。

文本过滤器
脚本约束
脚本 修饰符向搜索模板中添加 Groovy 脚本约束。 Script constraints 用于当您搜索某些语言结构时。
例如,具有指定参数数量的构造函数或具有指定可见性修饰符的成员。
在 script constraints 中可以访问模板中使用的所有变量。 当您向变量添加脚本约束时,PhpStorm 会将其与 PSI 树进行匹配,此变量实际上是 PSI 树中的一个 节点。
假设您有一个变量与一个方法匹配,一个 toString() 方法。 那么这个变量实际上是一个 PsiMethod 节点。 检索 variable.parent 将生成一个 PsiClass 节点,等等。 variable.text 然后将为您提供方法的完整文本。 如果您只需要方法的名称,您可以使用 variable.name。
在另一种情况下,结构化搜索和替换变量可能会匹配某些表达式,例如对变量的引用, PsiReferenceExpression。 当然,一个表达式是没有名字的,但检索整个表达式的文本,会给您提供它所引用的变量的名字。
您可以检查以下现有模板中使用的脚本约束语法:
使用常量参数的示例方法调用
类
具有无参数构造函数的类
非 final 的静态字段
未实现或未扩展的接口
字段/变量读取
具有给定名称模板的字段/变量已更新
