更改签名
更改签名重构结合了几种可以应用于函数签名的不同修改。 您可以使用此重构来:
更改函数名称和返回类型
添加、移除和重新排序参数
为参数分配默认值
更改参数名称和类型
通过函数调用层次结构传播新参数
在更改函数签名时,PhpStorm 会搜索该函数的所有用法,并更新所有可以安全修改的调用、实现和覆盖替换,以反映更改。
此 更改签名 重构仅支持 PHP 和 JavaScript(请参阅 重构 JavaScript)。
新参数的默认值和传播
对于添加到函数的每个新参数,您可以在 默认 字段中指定默认值(或表达式)。
您还可以将引入的参数传播到调用您正在更改签名的函数的其他函数。 重构结果取决于您是否指定了默认值以及是否使用了传播。
传播 :新参数可以传播到调用您正在更改签名的函数的任何函数。 在这种情况下,通常调用函数的签名会相应更改。 然而,这些更改还取决于为新参数设置的默认值。
默认 :通常,这是要添加到函数调用中的值。 如果新参数未传播到调用函数,则此类函数中的调用也将使用此值。 如果使用了传播,此值将不会影响调用函数中的函数调用。
添加参数
点击
return值,该值已用红色高亮显示。按 Alt+Enter 并选择 创建parameter '<parameter_name>'。
在 更改签名 对话框中,调整参数设置或接受建议的设置。
点击 重构(R)。
更改函数签名
将插入符号放在您想要重构的函数名称上。
按下 Ctrl+F6。 或者,从主菜单或上下文菜单中选择 。 更改签名 对话框已打开。

在 更改签名 对话框中,根据您的需要对函数签名进行必要的更改:
更改函数名称。 要更改名称,请编辑 名称 字段中的文本。
通过编辑 返回类型 字段的内容更改函数返回类型。
管理函数参数. 要配置参数,请使用 参数 区域中的表格和按钮:
要添加新参数,请单击
并在相应的表格行中指定新参数的属性。
按 Ctrl+Space 使用 代码补全。
要为参数提供默认值(这将影响函数签名),请使用 参数 字段,如下所示:
$parameterName = 'parameterValue';要为参数提供默认值(这将影响函数的调用),请使用 默认 字段,如下所示:
argumentValue。
在添加参数时,您可能希望将它们 传播 到调用当前函数的其他函数。
在 PHP 环境中,当从类的构造函数调用 更改签名 重构时,新参数可以初始化为类属性。 为此,请使用 创建并初始化类属性 复选框:
选中此复选框时,新添加的参数将初始化为字段。 PhpStorm 会创建一个与此参数同名的字段,并添加以下赋值语句:
$this->parameterName = $parameterName;清除此复选框时,将添加一个未初始化的参数。
新属性将使用默认可见性修饰符创建,该修饰符在 代码生成 选项卡的 代码样式 中设置。 PHP 页面的 设置 对话框(Ctrl+Alt+S)。
要移除参数,请选择任意行并单击
。
要重新排序参数,请单击
和
。 例如,如果您希望将某个参数放在列表的第一位,请单击该参数对应行中的任意单元格,然后单击
所需次数。
要更改参数的类型、名称或默认值,请在参数表格中(在 Type 和 参数 字段中)进行必要的更新。
沿调用当前函数的函数层次结构传播新的方法参数(如果有)。 可能有函数调用您正在更改签名的函数。 这些函数反过来可能会被其他函数调用,依此类推。 您可以将对当前函数参数所做的更改传播到调用函数的层次结构中,并指定哪些调用函数应受影响,哪些不应受影响。
要传播新参数:
点击 传播参数 按钮
。
在 选择传播新参数的方法 对话框的左侧窗格中,展开必要的节点并选中要传播新参数的函数旁边的复选框。

为帮助您选择必要的函数,对话框右侧部分显示了调用函数和被调用函数的代码(分别在 调用方法 和 被调用方法 窗格中)。
当您在左侧窗格中切换函数时,右侧窗格中的代码会相应更改。
点击 确定。
要 查看预期更改 并在重构前进行调整,请单击 预览。
点击 重构。
示例
示例 1
此示例展示了执行相同 更改签名 重构的 3 种不同方式。 在所有情况下, result() 函数被重命名为 generateResult () ,并向该函数添加了一个新的 $b 参数。
这些示例展示了函数调用、调用函数 showResult() 和其他代码片段如何根据重构设置受到影响。
之前 | 之后 |
|---|---|
function result($a) {
}
function showResult($a) {
$this->result($a);
}
| 函数被重命名并添加了一个新的
function generateResult($a,$b) {
}
function showResult($a,$b) {
$this->generateResult($a,$b);
}
|
函数被重命名并添加了一个带有
function generateResult($a,$b) {
}
function showResult($a) {
$this->generateResult($a,'new_param');
}
| |
函数被重命名,并添加了一个新的
function generateResult($a,$b) {
}
function showResult($a,$b) {
$this->generateResult($a,$b);
}
|
示例 2
在此示例中,我们对 __construct() 方法调用 更改签名 重构,并添加了一个新的 $q 参数。 结果取决于是否选中了 创建并初始化类属性 复选框。 新字段将使用默认可见性修饰符创建,该修饰符在 代码生成 选项卡的 代码样式 中设置。 PHP 页面的 设置 对话框(Ctrl+Alt+S)。
之前 | 之后 |
|---|---|
class ChangeSignatureNewParam {
function __construct() {
$a = "Constructor in ChangeSignatureNewParam";
print $a;
}
}
| 创建并初始化类属性(I) 复选框已选中:
class ChangeSignatureNewParam {
private $q;
function __construct($q) {
$a = "Constructor in ChangeSignatureNewParam";
print $a;
$this->q = $q;
}
}
|
创建并初始化类属性(I) 复选框已清除:
class ChangeSignatureNewParam {
function __construct($q) {
$a = "Constructor in ChangeSignatureNewParam";
print $a;
}
}
|
更改签名对话框
更改签名重构结合了几种可以应用于函数签名的不同修改。 您可以使用此重构来:
更改函数名称和返回类型
添加、移除和重新排序参数
为参数分配默认值
更改参数名称和类型
通过函数调用层次结构传播新参数
在更改函数签名时,PhpStorm 会搜索该函数的所有用法,并更新所有可以安全修改的调用、实现和覆盖替换,以反映更改。
此 更改签名 重构仅支持 PHP 和 JavaScript(请参阅 重构 JavaScript)。
项目 | 描述 |
|---|---|
名称 | 函数、方法或方法规范的名称。 |
参数 | 签名中的参数列表。 在 参数 字段中,您可以对参数执行以下操作:
|