PhpStorm 2021.3 Help

教程:移动 PHP 类

在本教程中,我们将探讨如何使用Move Refactorings在项目的命名空间之间移动 PHP 类。

将类移动到当前命名空间下的新命名空间

假设您的move_class项目具有namespace1命名空间,Class1该类在Class1.php文件中实现。

移动类项目概述

让我们创建一个从属命名空间namespace1\ns1并移动Class1到它。

  1. 在编辑器中打开Class1.php,将插入符号放在Class1,然后按F6。“移动类”对话框打开。

    移动类对话框
  2. 类 Class1 移至命名空间字段显示当前命名空间namespace1。将其更改为namespace1\ns1.

    在您键入时,目标目标目录字段会自动从 更新...\move_class\namespace1...\move_class\namespace1\ns1

    移动类对话框
  3. 单击重构。因此,PhpStorm 创建ns1子文件夹并将Class1.php移动到该文件夹​​。因此,Class1班级被移至namespace1\ns1

    Class1 搬家了

在同一个父级下的两个命名空间之间移动一个类

假设,您的move_class项目的namespace1命名空间有两个从属命名空间:namespace1\ns1namespace1\ns3. 这些从属命名空间分别具有Class1Class3。根据PSR0 标准,这些类在分别存储在...\move_class\namespace1\ns1...\move_class \namespace1\ns3下的Class1.phpClass3.php文件中实现。

移动类项目概述

让我们Class3namespace1\ns3namespace1\ns1

  1. 在编辑器中打开Class3.php,将插入符号放在Class3,然后按F6。“移动类”对话框打开。

    移动类对话框
  2. 类 Class3 移至命名空间字段显示当前命名空间namespace1\ns3。将其更改为namespace1\ns1.

    在您键入时,目标目标目录字段会自动从 更新...\move_class\namespace1\ns3...\move_class\namespace1\ns1

    移动类对话框
  3. 单击重构。结果,PhpStorm 将Class3类从移动namespace1\ns3namespace1\ns1。因此,Class3.php文件从...\move_class\namespace1\ns3文件夹移动到...\move_class\namespace1\ns1文件夹:

    3班搬家

将类移动到另一个父命名空间下的现有命名空间

假设您的move_class项目有两个父命名空间namespace1namespace2,以及从属命名空间namespace1\ns1namespace2\ns2。该类Class2在 中定义namespace2\ns2,根据PSR0 标准,实现它的Class2.php文件存储在...\move_class\namespace2\ns2中。

移动类项目概述

让我们Class2namespace2\ns2namespace1\ns1

  1. 在编辑器中打开Class2.php,将插入符号放在Class2,然后按F6。“移动类”对话框打开。

    移动类对话框
  2. 类 Class2 移动到命名空间字段显示当前命名空间namespace2\ns2。将其更改为namespace1\ns1.

    在您键入时,目标目标目录字段会自动从...\move_class\namespace2\ns2变为...\move_class\namespace1\ns1

    移动类对话框
  3. 单击重构。结果,PhpStorm 将Class2类从移动namespace2\ns2namespace1\ns1。因此,Class2.php...\move_class\namespace2\ns2移动到...\move_class\namespace1\ns1

    Class2 搬家了

将类移动到直接父命名空间之外的新命名空间

假设您的move_class项目有两个父命名空间,namespace1namespace2,以及从属命名空间,namespace1\ns1namespace2\ns2Class2在 中定义namespace2\ns2,根据PSR0 标准,实现它的Class2.php文件存储在...\move_class\namespace2\ns2中。

ps_move_class_9.png

让我们Class2从一个尚不存在namespace2\ns2的新命名空间转移。namespace3为满足PSR0要求,还应创建一个新的...\move_class\namespace3文件夹。namespace3

在开始重构时,我们应该记住,新的命名空间是在我们类命名空间的直接父命名空间之外创建的,因此 PhpStorm 不会为它建议一个合适的文件夹。所以我们既可以手动指定目标文件夹,也可以为命名空间指定一个根文件夹,这将是 PhpStorm 计算新命名空间文件夹的起点。

  1. 在编辑器中打开Class2.php,将插入符号放在Class2,然后按F6。“移动类”对话框打开。

    移动类对话框
  2. 类 Class2 移动到命名空间字段显示当前namespace2\ns2命名空间。将其更改为namespace3. 结果取决于您是否为命名空间指定了根文件夹。

    • 如果没有指定根文件夹,目标目标目录字段仍然显示...\move_class\namespace2\ns2的路径,因为 PhpStorm 无法确定namespace3要创建的新命名空间的文件夹的路径:

      移动类对话框

      要解决此问题,请按F2并手动键入路径:

      ...\move_class\namespace2\ns2
    • 或者,通过将...\move_class\文件夹标记为Sources来指定命名空间的根文件夹,如标记目录中所述。请注意,这应该在开始重构之前完成,因此如果您已经打开了Move Class对话框,请先将其关闭。

      在您指定...\move_class\作为命名空间的根之后,PhpStorm 将确定新命名空间的文件夹并自动更新目标目标目录字段:

      移动类对话框
    • 单击重构。结果,PhpStormClass2从移动namespace2\ns2namespace3。因此,Class2.php...\move_class\namespace2\ns2移动到...\move_class\namespace3

      Class2 搬家了
最后修改时间:2021 年 8 月 6 日