教程:移动 PHP 类
在本教程中,我们将探讨如何使用Move Refactorings在项目的命名空间之间移动 PHP 类。
将类移动到当前命名空间下的新命名空间
假设您的move_class
项目具有namespace1
命名空间,Class1
该类在Class1.php文件中实现。
让我们创建一个从属命名空间namespace1\ns1
并移动Class1
到它。
在编辑器中打开Class1.php,将插入符号放在
Class1
,然后按F6。“移动类”对话框打开。将类 Class1 移至命名空间字段显示当前命名空间
namespace1
。将其更改为namespace1\ns1
.在您键入时,目标目标目录字段会自动从 更新
...\move_class\namespace1
为...\move_class\namespace1\ns1
。单击重构。因此,PhpStorm 创建ns1子文件夹并将Class1.php移动到该文件夹。因此,
Class1
班级被移至namespace1\ns1
:
在同一个父级下的两个命名空间之间移动一个类
假设,您的move_class
项目的namespace1
命名空间有两个从属命名空间:namespace1\ns1
和namespace1\ns3
. 这些从属命名空间分别具有Class1
和Class3
。根据PSR0 标准,这些类在分别存储在...\move_class\namespace1\ns1和...\move_class \namespace1\ns3下的Class1.php和Class3.php文件中实现。
让我们Class3
从namespace1\ns3
到namespace1\ns1
。
在编辑器中打开Class3.php,将插入符号放在
Class3
,然后按F6。“移动类”对话框打开。将类 Class3 移至命名空间字段显示当前命名空间
namespace1\ns3
。将其更改为namespace1\ns1
.在您键入时,目标目标目录字段会自动从 更新
...\move_class\namespace1\ns3
为...\move_class\namespace1\ns1
。单击重构。结果,PhpStorm 将
Class3
类从移动namespace1\ns3
到namespace1\ns1
。因此,Class3.php文件从...\move_class\namespace1\ns3文件夹移动到...\move_class\namespace1\ns1文件夹:
将类移动到另一个父命名空间下的现有命名空间
假设您的move_class
项目有两个父命名空间namespace1
和namespace2
,以及从属命名空间namespace1\ns1
和namespace2\ns2
。该类Class2
在 中定义namespace2\ns2
,根据PSR0 标准,实现它的Class2.php文件存储在...\move_class\namespace2\ns2中。
让我们Class2
从namespace2\ns2
到namespace1\ns1
。
在编辑器中打开Class2.php,将插入符号放在
Class2
,然后按F6。“移动类”对话框打开。将类 Class2 移动到命名空间字段显示当前命名空间
namespace2\ns2
。将其更改为namespace1\ns1
.在您键入时,目标目标目录字段会自动从
...\move_class\namespace2\ns2
变为...\move_class\namespace1\ns1
。单击重构。结果,PhpStorm 将
Class2
类从移动namespace2\ns2
到namespace1\ns1
。因此,Class2.php从...\move_class\namespace2\ns2移动到...\move_class\namespace1\ns1:
将类移动到直接父命名空间之外的新命名空间
假设您的move_class
项目有两个父命名空间,namespace1
和namespace2
,以及从属命名空间,namespace1\ns1
和namespace2\ns2
。Class2
在 中定义namespace2\ns2
,根据PSR0 标准,实现它的Class2.php文件存储在...\move_class\namespace2\ns2中。
让我们Class2
从一个尚不存在namespace2\ns2
的新命名空间转移。namespace3
为满足PSR0要求,还应创建一个新的...\move_class\namespace3文件夹。namespace3
在开始重构时,我们应该记住,新的命名空间是在我们类命名空间的直接父命名空间之外创建的,因此 PhpStorm 不会为它建议一个合适的文件夹。所以我们既可以手动指定目标文件夹,也可以为命名空间指定一个根文件夹,这将是 PhpStorm 计算新命名空间文件夹的起点。
在编辑器中打开Class2.php,将插入符号放在
Class2
,然后按F6。“移动类”对话框打开。将类 Class2 移动到命名空间字段显示当前
namespace2\ns2
命名空间。将其更改为namespace3
. 结果取决于您是否为命名空间指定了根文件夹。如果没有指定根文件夹,目标目标目录字段仍然显示...\move_class\namespace2\ns2的路径,因为 PhpStorm 无法确定
namespace3
要创建的新命名空间的文件夹的路径:要解决此问题,请按F2并手动键入路径:
...\move_class\namespace2\ns2或者,通过将...\move_class\文件夹标记为Sources来指定命名空间的根文件夹,如标记目录中所述。请注意,这应该在开始重构之前完成,因此如果您已经打开了Move Class对话框,请先将其关闭。
在您指定...\move_class\作为命名空间的根之后,PhpStorm 将确定新命名空间的文件夹并自动更新目标目标目录字段:
单击重构。结果,PhpStorm
Class2
从移动namespace2\ns2
到namespace3
。因此,Class2.php从...\move_class\namespace2\ns2移动到...\move_class\namespace3: