PhpStorm 2024.3 ヘルプ

コピーして移動リファクタリング

移動リファクタリングを使用すると、クラス、クラスメンバー(メソッド、フィールド、定数)、通常の関数、定数、HTTP リクエストファイル、プロジェクト内のディレクトリを移動できます。その際、PhpStorm はこれらの動きを追跡し、ソースコード内の移動されたシンボルへのすべての参照を自動的に修正します。

ファイルまたはディレクトリを別のディレクトリに移動する

  1. プロジェクトツールウィンドウでファイルまたはディレクトリを選択します。

  2. 以下のいずれか 1 つを実行します:

    • リファクタリング | 移動に移動します。

    • 選択のコンテキストメニューからリファクタリング | 移動を選択します。

    • F6 を押します。

    表示されるダイアログは、選択したシンボルの型によって異なります。

  3. 宛先ディレクトリフィールドで、選択したファイルまたはフォルダーの移動先のフォルダーを指定します。リストから既存のフォルダーを選択するか、作成する親フォルダーへの絶対パスを入力します。選択したファイルまたはフォルダーへの参照をリファクタリング結果に従って更新するには、参照を検索チェックボックスを選択します。

PHP 名前空間を移動する

PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準(英語)に従って配置されていることを前提としており、名前空間を移動するときにこの標準に従ってフォルダー構造と名前空間階層を保持することを強制します。

ネームスペースを移動するネームスペースを指定すると、PhpStorm は自動的に対象の宛先ディレクトリフィールドを更新します。このフィールドには、ネームスペースに対応するフォルダーへのパスが表示されます。

  1. エディターで、移動するネームスペースにキャレットを置き、メインメニューまたは選択コンテキストメニューからリファクタリング | 移動を選択します。プロジェクトツールウィンドウで必要な名前空間に対応するフォルダーを選択し、リファクタリング | 移動を選択すると、ディレクトリの移動リファクタリングが呼び出されることに注意してください。

  2. 開いている名前空間を移動するダイアログに、新しい名前空間名とそれに対応するフォルダーを指定します。

    • 新しい名前空間名フィールドには、選択されたネームスペースの完全修飾名が表示されます。新しいネームスペース名を指定してください。名前空間の区切り文字としてバックスラッシュ \ のみを使用してください。

    • ダイアログが開くと、対象の宛先ディレクトリフィールドに現在のネームスペースに対応するフォルダーへのパスが表示されます。

      パスは次の形式で表示されます。

      ...\<project root>\<current namespace folder relative to the project root>

      新しい名前空間名を指定すると、パスは自動的に更新されます。ただし、名前空間を別の親名前空間に移動する場合、設定ダイアログ (Ctrl+Alt+S) のディレクトリページで関連するフォルダーをソースとしてマークして、名前空間構造のルートフォルダーを指定しない限り、PhpStorm は適切なフォルダーを提案しません。詳細については、「ディレクトリ」を参照してください。

      以下のいずれか 1 つを実行します:

      • フィールドに表示されている事前選択されたパスを受け入れます。

      • リストから別のパスを選択します。それらはすべて名前空間のルートまたは現在のディレクトリから評価されるため、それらのどれかを選択することは安全です。

      • the Browse button をクリックし、表示されるダイアログでフォルダーを選択します。

      • F2 を押し、あらかじめ選択したパスを編集します。これにより、将来の自動ロードで問題が発生する可能性があることに注意してください。

  3. リファクタリングをクリックし、表示される関連する名前空間を持つファイルを移動するダイアログで、新しい名前空間と新しいフォルダーに移動するクラスとファイルを指定します。

    ダイアログの上部ペインには、宛先の名前空間と、その名前空間に関連するクラスとファイルのフォルダーがリストされます。リスト内の各項目はクラス / ファイルに対応します。キャレットを項目に移動すると、下部ペインにその項目に関連するファイルの内容が表示されます。

    the Move Files With Related Namespaces dialog
    • クラスと対応するファイルを移動先の名前空間と移動先のフォルダーに移動するには、名前空間 / フォルダーの横にあるチェックボックスをオンにします。

    • すべての項目をリストに追加するか、リストからすべて削除するには、それぞれすべて選択またはすべて選択解除をクリックします。

  4. リファクタリングを開始するには、OK をクリックします。

静的 PHP メソッド、プロパティ、定数を別のクラスに移動する

  1. エディターで PHP クラスを開き、キャレットを静的メソッド、プロパティ、定数に配置します。

  2. メインメニューまたはエディターのコンテキストメニューから、リファクタリング | 移動を選択します。

    static メンバーの移動ダイアログが開きます。

  3. メンバーをクラスに移動するフィールドに、選択したメンバーを移動するクラスの完全修飾名を入力します。

    入力時に補完候補を使用するか、Ctrl+Space を押して、使用可能なクラスの完全なリストを取得します。

  4. 同じ型の定数を移動する場合、 enum case として移動チェックボックスを選択して、定数を enum case としてターゲットの列挙型クラスに移動できます。

  5. 別のクラスに移動するメンバーリストで、別のクラスに移動する現在のクラスの静的メソッド、プロパティ、定数の横にあるチェックボックスを選択します。

    選択したメンバーに選択されていない依存関係がある場合、そのような依存関係は青色でハイライトされます。

  6. リファクタリング後にエディターでターゲットクラスを開くには、エディターで開くチェックボックスを選択したままにします。

Move Static Member dialog

PHP ファイルからクラスに関数または定数を移動する

  1. 以下のいずれかを行います。

    • 単一の定数または関数を移動するには、エディターで PHP ファイルを開き、キャレットを定数または関数に置きます。

    • 一度に複数の定数または関数を移動するには、エディターで PHP ファイルを開き、構造ツールウィンドウ(Alt+7)または構造ビューポップアップ(Ctrl+F12)で移動する定数または関数を選択します。

      Select several constants to move in the Structure popup
  2. メインメニューまたはエディターのコンテキストメニューからリファクタリング | 移動を選択するか F6 を押します。

  3. 選択に応じて、定数を移動または関数の移動ダイアログが開きます。

    ダイアログで、選択した定数または関数を移動したいクラスの完全修飾名を入力します。PhpStorm は、クラスと名前空間の参照を補完します。クラスまたは名前空間の名前を入力すると、関連項目を含む候補リストが表示されます。Ctrl+Space を押して、利用可能なクラスの全リストを取得することもできます。

インスタンスの PHP メソッドを別のクラスに移動する

Move Instance メソッドリファクタリングは、インスタンス(非静的)メソッドを別のクラスに移動します。

  1. エディターで、インスタンスメソッドにキャレットを置き、次のいずれかを実行します。

    • メインメニューまたはコンテキストメニューから、リファクタリング | 移動を選択します。

    • F6 を押します。

  2. 以下を実施:

    • 開いたインスタンスメソッドの移動ダイアログで、インスタンスメソッドの移動先のターゲットクラスを選択します。

      Make Method Static prompt

      メソッドがクラスパラメーターを使用しない場合、または別のクラスのプロパティやメソッドへのアクセスに依存しない場合、PhpStorm は自動的にメソッドの可視性を public static に設定し、デフォルトのオプションを使用してサイレントに static にするリファクタリングを実行してから移動します。現在使用されていないメソッドを移動するなど、より単純なケースでは、PhpStorm はメソッドの可視性を変更しません。

    • それ以外の場合は、開いたインスタンスメソッドの移動ダイアログで以下を指定します。

      1. インスタンス式を選択するリストで、インスタンスメソッドの移動先のターゲットクラスを選択します。潜在的な移動ターゲットのリストには、現在のクラスのメソッドパラメーターのクラスとプロパティのクラスが含まれます。

      2. 可視性領域で、ターゲットメソッドの優先度の変更を選択します。

      3. $ this 参照をクラス <class_name> に置き換えるパラメーター名フィールドに、パラメーターの希望の名前を入力します。リファクタリングが実行されると、移動されるメソッドのパラメーターが追加され、現在のクラスへのすべての $this 参照が置き換えられます。

      Move Instance Method Dialog
  3. リファクタリングまたはプレビューをクリックしてリファクタリングを開始します。詳細については、コードリファクタリングを参照してください。

サンプル

foo インスタンスメソッドを class B から class A に移動しましょう。その結果、PhpStorm はこのメソッドを移動し、作成された $b パラメーターで $this リファレンスを class B に置き換えます。

class A{ } class B { function foo(A $a) { $this->bar(); return $a; } public function bar(){ } }
class A { function foo(A $a, B $b) { $b->bar(); return $a; } } class B { public function bar() { } }

クラスを別の名前空間に移動する

PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準(英語)に従って配置されていることを前提としており、名前空間間でクラスを移動するときに、この標準に従ってフォルダー構造と名前空間階層を保持することを強制します。

名前空間を指定してクラスを移動すると、PhpStorm は自動的に対象の宛先ディレクトリフィールドを更新します。このフィールドには、問題のクラスを実装するファイルが保存されるフォルダーのパスが表示されます。

  1. エディターで、移動するクラスにキャレットを配置します。

  2. 以下のいずれか 1 つを実行します:

    • リファクタリング | 移動に移動します。

    • 選択のコンテキストメニューからリファクタリング | 移動を選択します。

    • F6 を押します。

  3. 開いたクラスの移動ダイアログで、クラスを移動するための名前空間とクラスを実装するファイルが保存されるフォルダーを指定します。

    1. クラス <クラス名> を名前空間に移動フィールドで、選択したクラスを移動する名前空間を指定します。これは次のようになります。

      • 現在の名前空間にある新しい名前空間。

      • 現在の親にある別の下位の名前空間。

      • 別の親にある既存の名前空間または新しい名前空間。

      いずれにしても、クラスを参照する import 文はそれに応じて更新されます。

    2. 対象の宛先ディレクトリフィールドで、PhpStorm にクラスを実装するファイルを移動させるフォルダーを指定します。

      PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準(英語)に従って配置されていることを前提としており、名前空間間でクラスを移動するときに、この標準に従ってフォルダー構造と名前空間階層を保持することを強制します。

      名前空間を指定してクラスを移動すると、PhpStorm は自動的に対象の宛先ディレクトリフィールドを更新します。このフィールドには、問題のクラスを実装するフォルダーファイルへのパスが表示されます。

      ダイアログが開くと、現在のネームスペースに対応するフォルダーへのパスがフィールドに表示されます。

      パスは次の形式で表示されます。

      ...\<project root>\<current namespace folder relative to the project root>

      新しい名前空間名を指定すると、パスは自動的に更新されます。ただし、名前空間を別の親名前空間に移動する場合、設定ダイアログ (Ctrl+Alt+S) のディレクトリページで関連するフォルダーをソースとしてマークして、名前空間構造のルートフォルダーを指定しない限り、PhpStorm は適切なフォルダーを提案しません。詳細については、「ディレクトリ」を参照してください。

      以下のいずれか 1 つを実行します:

      • フィールドに表示されている事前選択されたパスを受け入れます。

      • リストから別のパスを選択します。それらはすべて名前空間のルートまたは現在のディレクトリから評価されるため、それらのどれかを選択することは安全です。

      • the Browse button をクリックし、表示されるダイアログでフォルダーを選択します。

      • F2 を押し、あらかじめ選択したパスを編集します。これにより、将来の自動ロードで問題が発生する可能性があることに注意してください。

    3. ファイルに複数のクラスが定義されている場合は、クラスを別のファイルに抽出しますチェックボックスが選択されています。このデフォルトの選択のままにします。

  4. リファクタリングまたはプレビューをクリックしてリファクタリングを開始します。詳細については、コードリファクタリングを参照してください。

ドラッグアンドドロップでクラスと名前空間を移動する

コードエディターを使用する代わりに、プロジェクトツールウィンドウでファイルとフォルダーを直接ドラッグして、クラスの移動および名前空間を移動するリファクタリングを実行できます。

  1. プロジェクトに、プロジェクトで PHP 名前空間を構成するに従って構成された名前空間ルートがあることを確認してください。

  2. プロジェクトツールウィンドウで、ファイル (個々のクラスを移動する) またはフォルダー (名前空間全体を移動する) を選択し、目的の場所にドラッグします。

    Ps move class dnd animated

詳細は、コードリファクタリングを参照してください。

HTTP リクエストを移動する

F6 リファクタリング移動を使用して、HTTP リクエストをスクラッチから物理ファイルに移動したり、物理ファイル間で移動したりできます。

  1. エディターで、移動するリクエストにキャレットを配置し、次のいずれかを実行します。

    • メインメニューまたはコンテキストメニューから、リファクタリング | 移動を選択します。

    • Alt+Enter を押して、HTTP リクエストの移動 インテンションアクションを選択します。

    • F6 を押します。

  2. 開いた HTTP リクエストの移動ダイアログで、次の手順を実行します。

    1. パスフィールドで、リストから既存の .http ファイルの 1 つを選択するか、the Browse button をクリックしてファイルを見つけます。

      ファイルへのフルパスを手動で入力することもできます。存在しないファイルの名前を指定すると、指定した名前の新しいファイルが自動的に作成されます。

    2. 要求リストで、移動するリクエストの横にあるチェックボックスをオンにします。

    Move HTTP requests

コピーリファクタリング

コピーリファクタリングを使用すると、クラス、ファイル、ディレクトリをその構造全体とともに 1 つのディレクトリから別のディレクトリにコピーできます。

  1. いずれかのビューで目的の項目を選択するか、エディターで開きます。

  2. 以下のいずれか 1 つを実行します:

    • メインメニューまたは選択コンテキストメニューから、リファクタリング | コピーを選択します。

    • F5 を押します。

    • プロジェクトツールウィンドウで目的のクラスを選択し、Ctrl を押したまま目的のクラスにドラッグします。

  3. 開いたコピーダイアログで新しい名前と宛先を指定し、OK をクリックします。

関連ページ:

プロジェクト内のターゲットを検索する

プロジェクト内のテキスト文字列を検索したり、さまざまな範囲を使用して検索プロセスを絞り込んだり、検索から特定の項目を除外したり、使用箇所や出現箇所を見つけたりすることができます。プロジェクトで検索文字列を見つけるを押すか、メインメニューからを選択します。検索フィールドに検索文字列を入力します。または、エディターで検索する文字列をハイライトしてを押すか、コンテキストメニューから複数ファイル内検索を選択します。PhpStorm はハイライトされた文字列を検索フィールドに入力します。以前の検索のリス...

名前空間を移動するダイアログ

移動する PHP 名前空間を選択し、メインメニューまたは選択したコンテキストメニューからを選択すると、ダイアログが開きます。PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準に従って配置されていることを前提としており、名前空間を移動するときにこの標準に従ってフォルダー構造と名前空間階層を保持することを強制します。名前空間を指定すると、名前空間を移動するために、PhpStorm は自動的に対象の宛先ディレクトリフィールドを更新します。このフィールドには、問題の名前空間に対...

ディレクトリ

このダイアログを使用して、プロジェクトディレクトリ構造内のフォルダータイプを構成します。コンテンツルートの追加このボタンをクリックし、開いたダイアログで新しいコンテンツルートフォルダーを選択します。コンテンツルートはアプリケーションのルートディレクトリです。1 つの PhpStorm プロジェクト内に複数のコンテンツルートを追加できます。いくつかのコンテンツルートを持つことで、共通の直系親を持たない複数のディレクトリからのファイルを扱うことができます。これは、静的コンテンツ(アイコンなど)を使用...

コードリファクタリング

リファクタリングは、新しい機能を作成せずにソースコードを改善するプロセスです。リファクタリングは、コードを安定させ、dry に保ち、保守を容易にできます。リファクタリングの呼び出し:リファクタリングするアイテムを選択します。エディターでプロジェクトツールウィンドウまたは式 / シンボルでファイル / フォルダーを選択できます。選択可能なリファクタリングのリストを開くには、を押します。または、特定のリファクタリング用のキーボードショートカットを使用することもできます。フィールドのカプセル化、st...

プロジェクトで PHP 名前空間を構成する

PhpStorm は、PHP の名前空間名をディレクトリ構造にマップする必要があることを規定する PSR-0/PSR-4 オートロード標準をサポートします。PhpStorm でソースルートタイプでマークされたディレクトリはネームスペースのルートとみなされ、その下に作成されるすべてのディレクトリは別個のネームスペースとみなされます。ソースルートタイプが設定されている場合、新しいクラス / インターフェースなどを作成するときに、PhpStorm によって名前空間名が自動補完されます。このディレクトリ内に...

HTTP クライアント

HTTP クライアントプラグインを使用すると、PhpStorm コードエディターで HTTP リクエストを直接作成、編集、実行できます。HTTP リクエストを作成して実行する必要がある場合、主に 2 つのユースケースがあります。RESTful Web サービスを開発していて、それが期待どおりに機能し、仕様に準拠してアクセス可能であり、正しく応答することを確認したい場合。RESTful Web サービスに対応するアプリケーションを開発している場合。この場合、開発を開始する前にサービスへのアクセスと...