PhpStorm 2021.3 Help

提取常数

Extract Constant重构使您的源代码更易于阅读和维护。它还可以帮助您避免使用硬编码常量,而无需对其值或用途进行任何解释。

就地提取 PHP 常量

默认情况下,PhpStorm 中启用了就地重构。如果您没有更改此设置,则在编辑器中就地执行 PHP 的Extract Constant重构。

  1. 将插入符号放在要替换为常量的变量的表达式或声明中。

  2. 执行以下操作之一:

    • Ctrl+Alt+C

    • 选择重构 | 提取物 | 来自主菜单或上下文菜单的常量。

  3. 如果在当前插入符号位置检测到多个表达式,则会出现表达式列表。如果是这种情况,请单击表达式以将其选中。或者,按UpDown导航至感兴趣的表达,然后按Enter将其选中。

    选择表达式
  4. 如果找到不止一次出现的表达式,请指定您是希望仅替换选定的出现,还是用新常量替换所有找到的出现。

  5. 如果您希望在不同的类中定义常量,请选中移动到另一个类复选框。

    将常量移动到另一个类
  6. 指定常量的名称。从列表中选择名称或在带有红色边框的框中键入名称。

  7. 要完成重构,请按TabEnter

    如果您尚未完成重构并想取消所做的更改,请按Escape

  8. 如果您已选择将提取的常量定义移动到不同的类,则会打开“提取常量重构”对话框。在对话框中,选择目标类复选框并在字段中键入所需的类名称。

使用对话框提取常量

如果就地重构被禁用,则通过Extract Constant Dialog对话框执行Extract Constant重构。

  1. 在编辑器中,将插入符号放置在要替换为常量的表达式内。

  2. Ctrl+Alt+C或选择重构 | 提取物 | 主菜单或编辑器上下文菜单中的常量

  3. 如果可以从当前上下文中的多个表达式中提取常量,PhpStorm 会在列表中显示所有相关表达式。选择要应用重构的表达式。

  4. 在“提取常量”对话框中,在“名称”字段中键入新常量的名称

  5. 指定应用重构的范围:

    • 要仅替换选定的表达式,请清除替换所有匹配项复选框。

    • 要让 PhpStorm 替换任何使用的选定表达式,请选中替换所有匹配项复选框。

  6. 如果在类定义中调用重构,请选择提取常量的可见性范围(访问级别修饰符)。如果您选择默认值,则常量将被隐式定义为public没有应用任何修饰符。否则,您可以选择适当的选项将常量显式标记为publicprivateprotected。仅在 PHP 语言版本 7.1 及更高版本中可以设置可见性范围。您可以在设置/首选项对话框 ( )的PHP 页面上指定 PHP 语言级别。Ctrl+Alt+S

    否则,如果在 PHP 类定义之外调用重构,请在常量语法区域中选择定义 PHP 常量的方法。

    • 要让 PhpStorm 通过define() 函数定义常量,请选择define

    • 要让 PhpStorm 通过const类定义之外的关键字定义常量,请选择const。此方法保留了 PHP 版本 5.3.0 中接受的方法。请注意,此类常量是在编译期间定义的,因此它们应该在顶级范围内声明,而不是在函数、循环或if语句内。

  7. 如果您希望在不同的类中定义常量,请选中目标类复选框并在字段中键入所需的类名称。

  8. 单击“确定”开始重构。

PHP 示例

提取类常量

在类定义中提取常量时,新常量通过关键字定义const并通过关键字引用self

在 PHP 语言版本 7.1 及更高版本中,您可以另外将提取的常量标记为publicprivateprotected

类 const_extraction { 公共静态函数 find($params) { if (isset($params['param_query'])) { $result = MyDatabase::execute($params['param_query']); } } 公共静态函数 findAll($params) { if (isset($params['param_query'])) { $result = MyDatabase::executeAll($params['param_query']); } } }
类 const_extraction { const PARAM_QUERY = 'param_query'; 公共静态函数 find($params) { if (isset($params[self::PARAM_QUERY])) { $result = MyDatabase::execute($params[self::PARAM_QUERY]); } } 公共静态函数 findAll($params) { if(isset($params[self::PARAM_QUERY])) { $result = MyDatabase::executeAll($params[self::PARAM_QUERY]);

在类外提取常量

在类定义之外提取常量时,可以选择是通过const关键字定义还是通过define()函数定义。

函数 find($params) { if (isset($params['param_query'])) { $result = MyDatabase::execute($params['param_query']); } } 函数 findAll($params) { if (isset($params['param_query'])) { $result = MyDatabase::executeAll($params['param_query']); } }

const定义:

常量 PARAM_QUERY = 'param_query'; 函数 find($params) { if (isset($params[PARAM_QUERY])) { $result = MyDatabase::execute($params[PARAM_QUERY]); } } 函数 findAll($params) { if (isset($params[PARAM_QUERY])) { $result = MyDatabase::executeAll($params[PARAM_QUERY]); } }

define()定义:

定义('PARAM_QUERY','param_query');函数查找($params) { if(isset($params[PARAM_QUERY])) { $result = MyDatabase::execute($params[PARAM_QUERY]); } } 函数 findAll($params) { if(isset($params[PARAM_QUERY])) { $result = MyDatabase::executeAll($params[PARAM_QUERY]); } }

JavaScript 示例

Parenizor.method('toString', function () { return '(' + this.getValue() + ')'; })
Parenizor.method('toString', function () { const string = '(' + this.getValue() + ')'; return string; })
最后修改时间:2021 年 11 月 22 日