提取常数
Extract Constant重构使您的源代码更易于阅读和维护。它还可以帮助您避免使用硬编码常量,而无需对其值或用途进行任何解释。
就地提取 PHP 常量
默认情况下,PhpStorm 中启用了就地重构。如果您没有更改此设置,则在编辑器中就地执行 PHP 的Extract Constant重构。
将插入符号放在要替换为常量的变量的表达式或声明中。
执行以下操作之一:
按Ctrl+Alt+C。
选择重构 | 提取物 | 来自主菜单或上下文菜单的常量。
如果在当前插入符号位置检测到多个表达式,则会出现表达式列表。如果是这种情况,请单击表达式以将其选中。或者,按Up或Down导航至感兴趣的表达,然后按Enter将其选中。
如果找到不止一次出现的表达式,请指定您是希望仅替换选定的出现,还是用新常量替换所有找到的出现。
如果您希望在不同的类中定义常量,请选中移动到另一个类复选框。
指定常量的名称。从列表中选择名称或在带有红色边框的框中键入名称。
要完成重构,请按Tab或Enter。
如果您尚未完成重构并想取消所做的更改,请按Escape。
如果您已选择将提取的常量定义移动到不同的类,则会打开“提取常量重构”对话框。在对话框中,选择目标类复选框并在字段中键入所需的类名称。
使用对话框提取常量
如果就地重构被禁用,则通过Extract Constant Dialog对话框执行Extract Constant重构。
在编辑器中,将插入符号放置在要替换为常量的表达式内。
按Ctrl+Alt+C或选择
。如果可以从当前上下文中的多个表达式中提取常量,PhpStorm 会在列表中显示所有相关表达式。选择要应用重构的表达式。
在“提取常量”对话框中,在“名称”字段中键入新常量的名称。
指定应用重构的范围:
要仅替换选定的表达式,请清除替换所有匹配项复选框。
要让 PhpStorm 替换任何使用的选定表达式,请选中替换所有匹配项复选框。
如果在类定义中调用重构,请选择提取常量的可见性范围(访问级别修饰符)。如果您选择默认值,则常量将被隐式定义为
public
没有应用任何修饰符。否则,您可以选择适当的选项将常量显式标记为public
、private
或protected
。仅在 PHP 语言版本 7.1 及更高版本中可以设置可见性范围。您可以在设置/首选项对话框 ( )的PHP 页面上指定 PHP 语言级别。Ctrl+Alt+S否则,如果在 PHP 类定义之外调用重构,请在常量语法区域中选择定义 PHP 常量的方法。
要让 PhpStorm 通过define() 函数定义常量,请选择define。
要让 PhpStorm 通过
const
类定义之外的关键字定义常量,请选择const。此方法保留了 PHP 版本 5.3.0 中接受的方法。请注意,此类常量是在编译期间定义的,因此它们应该在顶级范围内声明,而不是在函数、循环或if语句内。
如果您希望在不同的类中定义常量,请选中目标类复选框并在字段中键入所需的类名称。
单击“确定”开始重构。
PHP 示例
提取类常量
在类定义中提取常量时,新常量通过关键字定义const
并通过关键字引用self
。
在 PHP 语言版本 7.1 及更高版本中,您可以另外将提取的常量标记为public
、private
或protected
。
前 | 后 |
---|---|
类 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']); } }
|
常量 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]); } }
定义('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; })
|