提取类
PhpStorm 允许您使用将类方法和属性提取到新类中的重构功能。 这些重构在一个类变得过大且“做了太多事情”时非常有用。 在这种情况下,可能是将类拆分为更小、更内聚的类的好主意。 此外,您可以将 php 文件中定义的函数提取到新类中。 这可能有助于将相关功能分组到工具类中,避免非命名空间方法的冲突,或以面向对象的方式表示您的代码库。
将插入符号放在您想要提取到类中的代码片段处。 您可以提取 PHP 类的属性和方法以及独立函数。
转到 或按 Ctrl+Alt+Shift+T ,然后在弹出菜单中选择 提取类。
在打开的对话框中,指定目标命名空间和目标目录、新类的期望名称,以及要提取的类成员或独立函数。 要为类的字段生成访问器和修改器方法(getter 和 setter),请选择 生成访问器 复选框。

预览您的更改,然后点击 确定。
提取类示例
在以下示例中, bar 方法从 Source 类中提取到一个新的 目标 类中。 在重构过程中,将发生以下情况:
PhpStorm 创建一个新的类
目标,并将bar方法的实现移到此类中。目标类的一个实例通过构造函数注入到Source中。为了提供对私有属性
foo的访问,在Source类中生成了get_foogetter 方法。 这是通过启用 生成访问器 选项 在“提取到类”对话框中 实现的。(new Source())->bar()方法调用未发生变化,但实际执行现在被委托给目标类的bar方法。
class Source {
private $foo;
public function bar() {
echo $this->foo;
}
}
(new Source())->bar();
class Source {
private $foo;
/** @var \Target */
private $target;
public function __construct() {
$this->target = new \Target($this);
}
public function bar() {
$this->target->bar();
}
public function get_foo() {
return $this->foo;
}
}
class Target {
private $source;
public function __construct(Source $source) {
$this->source = $source;
}
public function bar() {
echo $this->source->get_foo();
}
}
(new Source())->bar();
最后修改日期: 2025年 9月 26日