复制和移动重构
“ 移动 ”重构允许您在项目中移动类、类成员(方法、字段和常量)、常规函数和常量、HTTP 请求文件以及目录。 在此过程中,PhpStorm 会跟踪这些移动并自动更正源代码中对已移动符号的所有引用。
将文件或目录移动到另一个目录
在 Project 工具窗口中选择文件或目录。
请执行以下操作之一:
转到 。
从所选内容的上下文菜单中选择 。
按下 F6。
打开的对话框取决于所选符号的类型。
在 到目录 字段中,指定要将所选文件或文件夹移动到的文件夹。 从列表中选择一个现有文件夹,或键入要创建的父文件夹的完整路径。 要根据重构结果更新对所选文件或文件夹的引用,请选中 搜索引用(F) 复选框。
移动 PHP 命名空间
PhpStorm 假设您的项目中的命名空间是按照 PSR-0/PSR-4 标准 进行排列的,并强制您在移动命名空间时保持文件夹结构和命名空间层次结构与此标准一致。
当您指定要将命名空间移动到的命名空间时,PhpStorm 会自动更新 目标目标目录 字段,该字段显示与命名空间对应的文件夹路径。
在编辑器中,将插入符号放在要移动的命名空间上,然后从主菜单或选择上下文菜单中选择 。 请注意,如果您在 Project 工具窗口中选择与所需命名空间对应的文件夹,然后选择 ,将调用 “移动目录”重构。
在打开的 移动命名空间对话框 中,指定新的命名空间名称以及与之对应的文件夹。
新命名空间名称 字段显示所选命名空间的完全限定名称。 请指定新的命名空间名称。 仅使用 反斜杠
\作为命名空间分隔符。当对话框打开时, 目标目标目录 字段显示与当前命名空间对应的文件夹路径。
路径显示如下格式:
...\<project root>\<current namespace folder relative to the project root>路径会在您指定新的命名空间名称时自动更新。 但是,如果您打算将命名空间移动到另一个父命名空间,PhpStorm 不会建议正确的文件夹,除非您通过在 Sources页面的 目录 对话框 设置 (Ctrl+Alt+S )中将相关文件夹标记为根文件夹来指定命名空间结构的根文件夹。 欲了解更多信息,请参阅 目录。
请执行以下操作之一:
接受字段中显示的预选路径。
请从列表中选择另一条路径。 所有这些都是从 namespace root或当前目录进行评估的,因此选择其中任何一个都是安全的。
点击
并在打开的对话框中选择一个文件夹。
按 F2 并编辑预选路径。 请注意,这可能会导致将来自动加载时出现问题。
单击 重构 并在打开的 移动具有相关命名空间的文件 对话框中指定要移动到新命名空间和新文件夹的类和文件。
对话框的上窗格列出了与命名空间相关的类和文件的目标命名空间和文件夹。 列表中的每个项目对应一个类/文件。 当您将文本光标移动到某个项目时,底部窗格会显示与其相关的文件内容。

要将类及相应的文件移动到目标命名空间和目标文件夹,请选中命名空间/文件夹旁边的复选框。
要将所有项目添加到列表中或从列表中删除,分别点击 全选 或 取消全选。
单击 确定 以开始重构。
将静态 PHP 方法、属性或常量移动到另一个类
在编辑器中打开一个 PHP 类,并将插入符号放在静态方法、属性或常量上。
从主菜单或编辑器上下文菜单中选择 。
移动static 成员 对话框将打开。
在 将成员移至类(C) 字段中,输入要将所选成员移动到的类的完全限定名称。
在输入时使用补全建议,或按 Ctrl+Space 获取可用类的完整列表。
如果移动的是相同类型的常量,您可以选中 作为枚举案例移动 复选框,将常量移动到目标枚举类作为枚举案例。
在 要移至另一个类的成员 列表中,选中当前类中要移动到另一个类的静态方法、属性或常量旁边的复选框。
如果所选成员有未选中的依赖项,这些依赖项将以蓝色突出显示。
保持 在编辑器中打开 复选框选中状态,以便在重构后在编辑器中打开目标类。

将函数或常量从 PHP 文件移动到类
执行以下任意操作:
要移动单个常量或函数,请在编辑器中打开一个 PHP 文件,并将插入符号放在常量或函数上。
要一次移动多个常量或函数,请在编辑器中打开一个 PHP 文件,并在 结构 工具窗口(Alt+7 )或结构视图弹出窗口(Ctrl+F12 )中选择要移动的常量或函数。

从主菜单或编辑器上下文菜单中选择 或按 F6。
根据您的选择, 移动常量 或 移动函数 对话框将打开。
在对话框中,输入要将所选常量或函数移动到的类的完全限定名称。 PhpStorm 为类和命名空间引用提供补全:当您输入类或命名空间名称时,会显示包含相关项目的建议列表。 您还可以通过按 Ctrl+Space 获取可用类的完整列表。
将实例 PHP 方法移动到另一个类
移动实例方法重构将实例(非静态)方法移动到另一个类。
在编辑器中,将插入符号放在实例方法上,然后执行以下操作之一:
从主菜单或上下文菜单中选择 。
按下 F6。
请执行以下操作:
在打开的 移动实例方法 对话框中,选择要将实例方法移动到的目标类。

如果方法不使用任何类参数,也不依赖于访问另一个类的属性或方法,PhpStorm 将自动将方法的可见性设置为
public static,使用默认选项静默执行 设为静态 重构,然后移动它。 在更简单的情况下,例如移动当前未使用的方法,PhpStorm 不会更改方法的可见性。否则,在打开的 移动实例方法 对话框中,指定以下内容:
在 选择一个实例表达式(I) 列表中,选择要将实例方法移动到的目标类。 潜在移动目标的列表包括方法参数的类和当前类中属性的类。
在 可见性 区域中,选择目标方法的首选可见性修饰符。
在 用于将 $this 引用替换为类 <class_name> 的参数名称 字段中,输入所需的参数名。 执行重构时,将为被移动的方法添加参数,该参数将替换所有
$this对当前类的引用。

通过单击 重构 或 预览 启动重构。 有关更多详细信息,请参阅 代码重构。
示例
让我们将 foo 实例方法从 class B 移动到 class A。 结果,PhpStorm 将移动该方法,并用创建的 $b 参数替换 $this 对 class B 的引用:
将类移动到另一个命名空间
PhpStorm 假定您的项目中的命名空间是按照 PSR-0/PSR-4 标准组织的,并强制您在命名空间之间移动类时根据此标准保留文件夹结构和命名空间层次结构。
当您指定要将类移动到的命名空间时,PhpStorm 会自动更新 目标目标目录 字段,该字段显示将存储实现相关类的文件的文件夹路径。
在编辑器中,将插入符号放在要移动的类上。
请执行以下操作之一:
转到 。
从所选内容的上下文菜单中选择 。
按下 F6。
在打开的 移动类 对话框中,指定要将类移动到的命名空间以及将存储实现相关类的文件的文件夹。
在 将类 <class name> 移动到命名空间 字段中,指定要将所选类移动到的命名空间。 这可以是:
当前命名空间下的新命名空间。
当前父级下的另一个子命名空间。
另一个父级下的现有或新命名空间。
在任何情况下,引用该类的导入语句都会相应更新。
在 目标目录(D) 字段中,指定您希望 PhpStorm 移动实现相关类的文件的文件夹。
PhpStorm 假定您的项目中的命名空间是按照 PSR-0/PSR-4 标准组织的,并强制您在命名空间之间移动类时根据此标准保留文件夹结构和命名空间层次结构。
当您指定要将类移动到的命名空间时,PhpStorm 会自动更新 目标目标目录 字段,该字段显示实现相关类的文件的文件夹路径。
当对话框打开时,该字段显示与当前命名空间对应的文件夹路径。
路径显示如下格式:
...\<project root>\<current namespace folder relative to the project root>路径会在您指定新的命名空间名称时自动更新。 但是,如果您打算将命名空间移动到另一个父命名空间,PhpStorm 不会建议正确的文件夹,除非您通过在 Sources页面的 目录 对话框 设置 (Ctrl+Alt+S )中将相关文件夹标记为根文件夹来指定命名空间结构的根文件夹。 欲了解更多信息,请参阅 目录。
请执行以下操作之一:
接受字段中显示的预选路径。
请从列表中选择另一条路径。 所有这些都是从 namespace root或当前目录进行评估的,因此选择其中任何一个都是安全的。
点击
并在打开的对话框中选择一个文件夹。
按 F2 并编辑预选路径。 请注意,这可能会导致将来自动加载时出现问题。
如果文件中定义了多个类,则会选中 将类提取到单独的文件(E) 复选框。 保留此默认选择。
通过单击 重构 或 预览 启动重构,更多详细信息请参阅 代码重构。
通过拖放移动类和命名空间
作为使用代码编辑器的替代方法,您可以通过直接在 项目 工具窗口中拖动文件和文件夹来执行 移动类和 移动命名空间重构。
确保项目已按照 在项目中配置 PHP 命名空间 中描述的方式配置命名空间根。
在 项目 工具窗口中,选择一个文件或多个文件(以移动单个类),或文件夹(以移动整个命名空间),并将它们拖动到目标位置。

如需了解更多信息,请参阅 代码重构。
移动 HTTP 请求
您可以使用 Move 重构 F6 将 HTTP 请求从临时文件移至物理文件,也可以在不同的物理文件之间移动。
在编辑器中,将文本光标置于要移动的请求处,然后执行以下操作之一:
从主菜单或上下文菜单中选择 。
按 Alt+Enter 并选择 移动HTTP 请求 意图操作。
按下 F6。
在打开的 移动HTTP 请求 对话框中,执行以下操作:
在 Path 字段中,从列表中选择一个现有的 .http 文件,或点击
以找到该文件。
您也可以手动输入文件的完整路径。 如果您指定一个不存在的文件名称,将会自动创建一个具有提供的名称的新文件。
在 请求 列表中,选中您要移动的请求旁边的复选框。

复制重构
复制重构允许您 复制类、文件或目录及其整个结构,从一个目录到另一个目录。
在视图中选择所需的项目或在编辑器中打开它。
请执行以下操作之一:
从主菜单或选择上下文菜单中选择 。
按下 F5。
在 Project 工具窗口中选择所需的类,并在按住 Ctrl 的同时将其拖动到目标位置。
在打开的 复制对话框中,指定新名称和目标位置,然后单击 确定。