PhpStorm 2026.1 Help

クラスの抽出

PhpStorm では、クラスのメソッドやプロパティを新しいクラスに抽出するリファクタリングが使用できます。 これらのリファクタリングは、クラスが大きくなりすぎて「実行することが多すぎる」場合に役立ちます。 このような場合は、クラスをより小規模でまとまりのあるクラスに分割するとよいでしょう。 さらに、 php ファイルで定義された関数を新しいクラスに抽出できます。 これは、関連する機能をユーティリティクラスにグループ化する場合、名前空間のないメソッドの衝突を回避する場合、オブジェクト指向の方法でコードベースを表現する場合に便利です。

  1. クラスに抽出するコード部分にキャレットを置きます。 PHP クラスのプロパティとメソッド、およびスタンドアロン関数を抽出できます。

  2. リファクタリング | 抽出 / 導入 | クラスの抽出 に移動するか、 Ctrl+Alt+Shift+T を押してポップアップメニューで クラスの抽出​​ を選択します。

  3. 開いたダイアログで、ターゲット名前空間と宛先ディレクトリ、新しいクラスの目的の名前、抽出するクラスメンバーまたはスタンドアロン関数を指定します。 クラスのフィールドのアクセサーメソッドとミューテーターメソッド(getter および setter)を生成するには、 アクセサーを生成する チェックボックスをオンにします。

    PhpStorm. クラス抽出リファクタリング
  4. 変更内容をプレビューし、 OK をクリックします。

クラスの抽出の例

次の例では、 bar メソッドが ソース クラスから新しい ターゲット クラスに抽出されます。 リファクタリング中に、次のことが起こります。

  • PhpStorm は新しいクラス ターゲット を作成し、 bar メソッドの実装をこのクラスに移動します。

  • ターゲット クラスのインスタンスは、コンストラクターを介して ソース にインジェクションされます。

  • プライベートプロパティ foo へのアクセスを提供するために、 get_foo getter メソッドが ソース クラス内で生成されます。 これは、 クラスに抽出ダイアログアクセサーを生成する オプションを有効にすることで実現されます。

  • (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();
2026 年 5 月 22 日