PhpStorm 2021.3 Help

移动重构

移动重构允许您移动项目中的类、类成员(方法、字段和常量)、常规函数和常量、HTTP 请求文件和目录。这样做时,PhpStorm 会跟踪这些移动并自动更正对源代码中移动符号的所有引用。

将文件或目录移动到另一个目录

  1. 在项目工具窗口中选择文件或目录。

  2. 执行以下操作之一:

    • 从主菜单中,选择重构 | 移动

    • 从选择的上下文菜单中,选择Refactor | 移动

    • F6

    打开的对话框取决于所选符号的类型。

  3. To directory字段中,指定要将所选文件或文件夹移动到的文件夹。从列表中选择现有文件夹或键入要创建的父文件夹的完整路径。要根据重构结果更新对选定文件或文件夹的引用,请选中搜索引用复选框。

移动 PHP 命名空间

PhpStorm 假设您项目中的命名空间按照PSR0 标准排列,并强制您在移动命名空间时按照此标准保留文件夹结构和命名空间层次结构。

当您指定将命名空间移动到的命名空间时,PhpStorm 会自动更新目标目标目录字段,该字段显示与命名空间对应的文件夹的路径。

  1. 在编辑器中,将插入符号放置在要移动的命名空间并选择Refactor | 从主菜单或选择上下文菜单移动。请注意,如果您在Project工具窗口中选择与所需命名空间对应的文件夹,然后选择Refactor | Move,将调用移动目录重构。

  2. 在打开的“移动命名空间”对话框中,指定新的命名空间名称和与其对应的文件夹。

    • 命名空间名称字段显示所选命名空间的完全限定名称。指定新的命名空间名称。仅使用反斜杠 \作为命名空间分隔符。

    • 当对话框打开时,Target Destination Directory字段显示与当前命名空间对应的文件夹的路径。

      路径以下列格式显示:

      ...\<项目根目录>\<相对于项目根目录的当前命名空间文件夹>

      当您指定新的命名空间名称时,路径会自动更新。但是,如果您要将命名空间移动到另一个父命名空间,PhpStorm 不会建议正确的文件夹,除非您通过在设置/首选项对话框的目录页面上将相关文件夹标记为来为命名空间结构指定一个根文件夹( )。有关详细信息,请参阅目录Ctrl+Alt+S

      执行以下操作之一:

      • 接受字段中显示的预选路径。

      • 从列表中选择另一条路径。所有这些都是从命名空间根目录或当前目录评估的,因此选择其中任何一个都是安全的。

      • 在打开的对话框中单击浏览按钮并选择一个文件夹。

      • 按下F2并编辑预选路径。请记住,这可能会导致将来自动加载出现问题。

  3. 单击Refactor,然后在打开的Move Files with Related Namespaces对话框中指定要移动到新命名空间和新文件夹的类和文件。

    对话框的上部窗格列出了与命名空间相关的类和文件的目标命名空间和文件夹。列表中的每一项都对应一个类/文件。当您将光标移动到某个项目时,底部窗格会显示与其相关的文件的内容。

    移动带有相关命名空间的文件对话框
    • 要将类和相应的文件移动到目标命名空间和目标文件夹,请选中命名空间/文件夹旁边的复选框。

    • 要将所有项目添加到列表或从列表中删除所有项目,请分别单击选或取消全选

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

将静态 PHP 方法、变量或常量移动到另一个类

  1. 在编辑器中打开一个 PHP 类,将插入符号放在静态方法、变量或常量处。

  2. 从主菜单或编辑器上下文菜单中,选择Refactor | 移动

  3. 在打开的“移动静态成员”对话框中,指定以下内容:

    1. 要移动到另一个类的成员列表中,选中要移动到另一个类的当前类的静态方法、变量或常量旁边的复选框。

    2. 在“将成员移动到类”字段中,键入要将选定成员移动到的类的完全限定名称。PhpStorm 为类和命名空间引用提供补全:当您键入类或命名空间名称时,会显示一个包含相关项目的建议列表。您还可以按 获取可用课程的完整列表Ctrl+Space

将函数或常量从 PHP 文件移动到类

  1. 执行以下任一操作:

    • 要移动单个常量或函数,请在编辑器中打开 PHP 文件并将插入符号放在常量或函数上。

    • 要一次移动多个常量或函数,请在编辑器中打开一个 PHP 文件,然后在结构工具窗口 ( Alt+7) 或结构视图弹出窗口 ( ) 中选择要移动的常量或函数Ctrl+F12

      在结构弹出窗口中选择要移动的几个常量
  2. 从主菜单或编辑器上下文菜单中,选择Refactor | 移动或按F6

  3. 根据您的选择,将打开“移动常数”或“移动函数”对话框。

    在对话框中,键入要在其中移动所选常量或函数的类的完全限定名称。PhpStorm 为类和命名空间引用提供补全:当您键入类或命名空间名称时,会显示一个包含相关项目的建议列表。您还可以按 获取可用课程的完整列表Ctrl+Space

将实例 PHP 方法移动到另一个类

Move 实例方法重构将一个实例(非静态)方法移动到另一个类。

  1. 在编辑器中,将插入符号放在实例方法上,然后执行以下操作之一:

    • 从主菜单或上下文菜单中,选择Refactor | 移动

    • F6

  2. 请执行下列操作:

    • 在打开的“移动实例方法”对话框中,选择要将实例方法移动到的目标类。

      使方法静态提示

      如果该方法不使用任何类参数也不依赖于访问另一个类的属性或方法,PhpStorm 将自动将方法可见性设置为public static,使用默认选项静默执行Make Static重构,然后移动它。在更简单的情况下,例如移动当前未使用的方法,PhpStorm 不会改变方法的可见性。

    • 否则,在打开的“移动实例方法”对话框中,指定以下内容:

      • Select an instance expression列表中,选择要将实例方法移动到的目标类。潜在移动目标列表包括当前类中的方法参数类和属性类。

      • 可见性区域中,选择目标方法的首选可见性修改器。

      • Parameter name to replace the $this reference to class <class_name>字段中,键入所需的参数名称。执行重构时,将为要移动的方法添加参数,这将替换$this对当前类的所有引用。

      移动实例方法对话框
  3. 通过单击RefactorPreview来启动重构。有关更多详细信息,请参阅代码重构

例子

让我们将foo实例方法从移动class Bclass A。结果,PhpStorm 将移动方法并将对的$this引用替换为class Bcreated$b参数:

类 A{ } 类 B { 函数 foo(A $a) { $this->bar(); 返回$a; } 公共函数 bar(){ } }
类 A { 函数 foo(A $a, B $b) { $b->bar(); 返回$a; } } 类 B { 公共函数 bar() { } }

将一个类移动到另一个命名空间

PhpStorm 假设您项目中的命名空间按照PSR0 标准排列,并强制您在命名空间之间移动类时按照此标准保留文件夹结构和命名空间层次结构。

当您指定将类移动到的命名空间时,PhpStorm 会自动更新Target Destination Directory字段,该字段显示将存储实现相关类的文件的文件夹的路径。

  1. 在编辑器中,将插入符号放在要移动的类上。

  2. 执行以下操作之一:

    • 从主菜单中,选择重构 | 移动

    • 从选择的上下文菜单中,选择Refactor | 移动

    • F6

  3. 在打开的“移动类”对话框中,指定要将类移动到的名称空间以及将存储实现该类的文件的文件夹。

    1. Move Class <class name> to Namespace字段中,指定将所选类移动到的命名空间。这可以是:

      • 当前命名空间下的新命名空间。

      • 当前父级下的另一个从属命名空间。

      • 另一个父级下的现有或新命名空间。

      在任何情况下,引用该类的导入语句都会相应更新。

    2. 目标目标目录字段中,指定您希望 PhpStorm 将实现类的文件移动到的文件夹。

      PhpStorm 假设您项目中的命名空间按照PSR0 标准排列,并强制您在命名空间之间移动类时按照此标准保留文件夹结构和命名空间层次结构。

      当您指定将类移动到的命名空间时,PhpStorm 会自动更新Target Destination Directory字段,该字段显示实现相关类的文件夹文件的路径。

      当对话框打开时,该字段显示与当前命名空间对应的文件夹的路径。

      路径以下列格式显示:

      ...\<项目根目录>\<相对于项目根目录的当前命名空间文件夹>

      当您指定新的命名空间名称时,路径会自动更新。但是,如果您要将命名空间移动到另一个父命名空间,PhpStorm 不会建议正确的文件夹,除非您通过在设置/首选项对话框的目录页面上将相关文件夹标记为来为命名空间结构指定一个根文件夹( )。有关详细信息,请参阅目录Ctrl+Alt+S

      执行以下操作之一:

      • 接受字段中显示的预选路径。

      • 从列表中选择另一条路径。所有这些都是从命名空间根目录或当前目录评估的,因此选择其中任何一个都是安全的。

      • 在打开的对话框中单击浏览按钮并选择一个文件夹。

      • 按下F2并编辑预选路径。请记住,这可能会导致将来自动加载出现问题。

    3. 如果文件中定义了多个类,则选中将类提取到单独的文件复选框。保留此默认选择。

  4. 通过单击RefactorPreview来启动重构,有关更多详细信息,请参阅代码重构

通过拖放移动类和命名空间

作为使用代码编辑器的替代方法,您可以通过直接在项目工具窗口中拖动文件和文件夹来执行移动类移动命名空间重构。

  1. 确保项目已按照在项目中配置 PHP 名称空间中所述配置名称空间根。

  2. 项目工具窗口中,选择一个或多个文件(移动单个类)或文件夹(移动整个命名空间)并将它们拖到所需的目标位置。

  3. 通过单击RefactorPreview来启动重构,有关更多详细信息,请参阅代码重构

移动 HTTP 请求

您可以使用Move重构F6将 HTTP 请求从临时文件移动到物理文件,以及物理文件之间。

  1. 在编辑器中,将插入符号放置在要移动的请求处,然后执行以下操作之一:

    • 从主菜单或上下文菜单中,选择Refactor | 移动

    • 按下Alt+Enter并选择移动 HTTP 请求 意图操作

    • F6

  2. 在打开的“移动 HTTP 请求”对话框中,执行以下操作:

    • 路径字段中,从列表中选择现有的.http文件之一或单击浏览按钮以找到该文件。

      您也可以手动键入文件的完整路径。如果您指定一个不存在的文件的名称,将自动创建一个具有所提供名称的新文件。

    • 在“请求”列表中,选中要移动的请求旁边的复选框。

    移动 HTTP 请求

复制重构

Copy重构允许您将类、文件或目录及其整个结构从一个目录复制到另一个目录

  1. 在其中一个视图中选择所需的项目或在编辑器中打开它。

  2. 执行以下操作之一:

    • 从主菜单或选择上下文菜单中,选择Refactor | 复制.

    • F5

    • 在项目工具窗口中选择所需的类,然后按住 将其拖动到目标Ctrl位置。

  3. 在打开的复制对话框中指定新名称和目的地,然后单击确定

最后修改:2021 年 12 月 10 日