提取方法
当调用Extract Method重构时,PhpStorm 分析选定的代码块并检测作为选定代码片段的输入的变量以及为其输出的变量。
检测到的输出变量用作提取函数的返回值。
在 JavaScript 上下文中,这种重构总是产生一个函数。
在 PHP 上下文中,应用Extract Method重构的结果取决于所选代码片段的位置。
如果选择是在类的方法内部进行的,则重构会提取一个方法。这种情况适用于您使用 PHP 5.0 及更高版本时。
如果选择是在函数或脚本内部进行的,则重构会提取函数。
提取 PHP 函数或方法
在编辑器中,选择要转换为函数或方法的代码块。
选定的代码片段不需要是一组语句。它也可能是代码中某处使用的表达式。
从主菜单或选择上下文菜单中,选择
或按Ctrl+Alt+M。指定新函数或方法的名称。
如果要提取方法,请在Visibility区域中为其选择相关的访问修饰符:
民众
受保护
私人的
在Return output variable(s) through区域中配置新方法或函数的输出。
输出变量只读字段显示构成所选代码片段输出的所有变量。指定新方法或函数将这些变量返回给被调用者的方式。
要按值返回输出变量,请选择Return 语句选项。这种选择的结果取决于检测到的输出变量的数量。如果只有一个输出变量,则将其用作返回值。如果选择输出多个变量,这些变量将作为数组返回。
要通过引用返回输出变量,请选择Parameter(s) 通过引用传递选项。在这种情况下,不会生成 return 语句。相反,所有检测到的输出变量都将添加到输入参数列表中。它们的名称将在“参数
&
”列表和新方法/函数的声明中都以& 开头,如签名预览只读区域所示。
在参数区域中,配置新函数或方法的输入。
最初,该列表包含 PhpStorm 检测到的变量作为新方法或函数的输入。但是,如果您选择通过引用返回新方法/函数输出,则该列表还包含所有输出变量。
要更改参数的顺序,请单击和。此顺序决定了参数在新方法或函数的声明中列出的顺序。
如有必要,通过双击相应的参数行并输入新名称来重命名所需的参数。
或者,如果选择包含任何语句,则要让 PhpStorm 转换尾部中断或继续语句,请选中将尾部“中断/继续”语句替换为返回语句复选框。
在Signature preview只读区域查看并检查要生成的函数或方法的声明。
PHP 提取方法示例
前 | 后 |
---|---|
公共函数 init() { $this->_router = $this->getFrontController()->getRouter(); }
|
公共函数 init() { $this->_router = $this->getRouter(); } 公共函数 getRouter() { return $this->getFrontController()->getRouter(); }
|
PHP 提取函数示例
前 | 后 |
---|---|
if ('POST' != $_SERVER['REQUEST_METHOD']) { header('Allow: POST'); header('HTTP/1.1 405 方法不允许'); header('Content-Type: text/plain'); 出口; }
|
函数 printEmptyHeader() { header('Allow: POST'); header('HTTP/1.1 405 方法不允许'); header('Content-Type: text/plain'); } if ('POST' != $_SERVER['REQUEST_METHOD']) { printEmptyHeader(); 出口; }
|