コピーして移動リファクタリング
移動リファクタリングを使用すると、クラス、クラスメンバー(メソッド、フィールド、定数)、通常の関数、定数、HTTP リクエストファイル、プロジェクト内のディレクトリを移動できます。 その際、PhpStorm はこれらの移動を追跡し、ソースコード内の移動されたシンボルへのすべての参照を自動的に修正します。
ファイルまたはディレクトリを別のディレクトリに移動する
プロジェクト ツールウィンドウでファイルまたはディレクトリを選択します。
次のいずれかを実行します:
に進みます。
選択のコンテキストメニューから を選択します。
F6 を押す。
表示されるダイアログは、選択したシンボルの型によって異なります。
宛先ディレクトリへ移動する フィールドで、選択したファイルまたはフォルダーの移動先のフォルダーを指定します。 リストから既存のフォルダーを選択するか、作成する親フォルダーへの絶対パスを入力します。 選択したファイルまたはフォルダーへの参照をリファクタリング結果に従って更新するには、 参照を検索 チェックボックスを選択します。
PHP 名前空間を移動する
PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準に従って配置されていることを前提としており、名前空間を移動する際も、この標準に従ってフォルダー構造と名前空間階層を保持することを強制します。
移動先の名前空間を指定すると、PhpStorm は自動的に ターゲット 宛先ディレクトリ フィールドを更新し、そのフィールドには該当する名前空間に対応するフォルダーへのパスが表示されます。
エディターで、移動するネームスペースにキャレットを置き、メインメニューまたは選択コンテキストメニューから を選択します。 プロジェクト ツールウィンドウで必要な名前空間に対応するフォルダーを選択し、 を選択すると、 ディレクトリの移動リファクタリングが呼び出されることに注意してください。
開いている 名前空間を移動するダイアログ に、新しい名前空間名とそれに対応するフォルダーを指定します。
新しい名前空間名 フィールドには、選択されたネームスペースの完全修飾名が表示されます。 新しいネームスペース名を指定してください。 名前空間の区切り文字として バックスラッシュ
\のみを使用してください。ダイアログが開くと、 ターゲット 宛先ディレクトリ フィールドに現在のネームスペースに対応するフォルダーへのパスが表示されます。
パスは次の形式で表示されます:
...\<project root>\<current namespace folder relative to the project root>新しい名前空間名を指定すると、パスは自動的に更新されます。 ただし、名前空間を別の親名前空間に移動する場合、 設定 ダイアログ (Ctrl+Alt+S) の ディレクトリ ページで関連するフォルダーを Sourcesとしてマークして名前空間構造のルートフォルダーを指定しない限り、PhpStorm は適切なフォルダーを提案しません。 詳細については、 ディレクトリ を参照してください。
次のいずれかを実行します:
フィールドに表示されている事前選択されたパスを受け入れます。
リストから別のパスを選択します。 それらはすべて 名前空間のルートまたは現在のディレクトリから評価されるため、それらのどれかを選択することは安全です。
をクリックし、表示されるダイアログでフォルダーを選択します。
F2 を押し、あらかじめ選択したパスを編集します。 これにより、将来の自動ロードで問題が発生する可能性があることに注意してください。
リファクタリング をクリックし、表示される 関連する名前空間のファイルを移動する ダイアログで、新しい名前空間と新しいフォルダーに移動するクラスとファイルを指定します。
ダイアログの上部ペインには、宛先の名前空間と、その名前空間に関連するクラスとファイルのフォルダーがリストされます。 リスト内の各項目はクラス / ファイルに対応します。 キャレットを項目に移動すると、下部ペインにその項目に関連するファイルの内容が表示されます。

クラスと対応するファイルを移動先の名前空間と移動先のフォルダーに移動するには、名前空間 / フォルダーの横にあるチェックボックスをオンにします。
すべての項目をリストに追加するか、リストからすべて削除するには、それぞれ すべて選択 または すべて選択解除 をクリックします。
リファクタリングを開始するには、 OK をクリックします。
静的 PHP メソッド、プロパティ、定数を別のクラスに移動する
エディターで PHP クラスを開き、キャレットを静的メソッド、プロパティ、定数に配置します。
メインメニューまたはエディターのコンテキストメニューから、 を選択します。
「static メンバーの移動 」ダイアログが開きます。
メンバーをクラスに移動する フィールドに、選択したメンバーを移動するクラスの完全修飾名を入力します。
入力時に補完候補を使用するか、 Ctrl+Space を押して、使用可能なクラスの完全なリストを取得します。
同じ型の定数を移動する場合、 enum case として移動 チェックボックスを選択して、定数を enum case としてターゲットの列挙型クラスに移動できます。
別のクラスに移動するメンバー リストで、別のクラスに移動する現在のクラスの静的メソッド、プロパティ、定数の横にあるチェックボックスを選択します。
選択したメンバーに選択されていない依存関係がある場合、そのような依存関係は青色でハイライトされます。
リファクタリング後にエディターでターゲットクラスを開くには、 エディターで開く チェックボックスを選択したままにします。

PHP ファイルからクラスに関数または定数を移動する
以下のいずれかを行ってください:
単一の定数または関数を移動するには、エディターで PHP ファイルを開き、キャレットを定数または関数に置きます。
一度に複数の定数または関数を移動するには、エディターで PHP ファイルを開き、 構造 ツールウィンドウ(Alt+7 )または構造ビューポップアップ(Ctrl+F12 )で移動する定数または関数を選択します。

メインメニューまたはエディターのコンテキストメニューから を選択するか F6 を押します。
選択に応じて、 定数を移動 または 関数の移動 ダイアログが開きます。
ダイアログで、選択した定数や関数を移動する先のクラスの完全修飾名を入力します。 PhpStorm はクラスおよび名前空間参照の補完を提供します。クラス名または名前空間名を入力すると、関連する項目がリストで提案されます。 Ctrl+Space を押すことで、利用可能なクラスの一覧を取得することもできます。
インスタンスの PHP メソッドを別のクラスに移動する
Move Instance メソッドリファクタリングは、インスタンス(非静的)メソッドを別のクラスに移動します。
エディターで、インスタンスメソッドにキャレットを置き、次のいずれかを実行します。
メインメニューまたはコンテキストメニューから、 を選択します。
F6 を押す。
以下を実施:
開いた インスタンスメソッドを移動する ダイアログで、インスタンスメソッドの移動先のターゲットクラスを選択します。

メソッドがクラスのパラメーターを使用していない、または他のクラスのプロパティやメソッドアクセスに依存していない場合、PhpStorm は自動でメソッドの可視性を
public staticに設定し、デフォルトオプションで 静的にする リファクタリングをサイレントで実行し、その後で移動します。 現在使われていないメソッドを移動するなど、より単純な場合は、PhpStorm はメソッドの可視性を変更しません。それ以外の場合は、開いた インスタンスメソッドを移動する ダイアログで以下を指定します。
インスタンス式を選択する リストで、インスタンスメソッドの移動先のターゲットクラスを選択します。 潜在的な移動ターゲットのリストには、現在のクラスのメソッドパラメーターのクラスとプロパティのクラスが含まれます。
可視性 領域で、ターゲットメソッドの優先度の変更を選択します。
$ this 参照をクラス <class_name> に置き換えるパラメーター名 フィールドに、パラメーターの希望の名前を入力します。 リファクタリングが実行されると、移動されるメソッドのパラメーターが追加され、現在のクラスへのすべての
$this参照が置き換えられます。

リファクタリング または プレビュー をクリックしてリファクタリングを開始します。 詳細については、 コードリファクタリング を参照してください。
サンプル
foo インスタンスメソッドを class B から class A に移動しましょう。 その結果、PhpStorm はメソッドを移動し、作成された $b パラメーターで $this リファレンスを class B に置き換えます:
クラスを別の名前空間に移動する
PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準に従って配置されていることを前提としており、名前空間間でクラスを移動する際も、この標準に従ってフォルダー構造と名前空間階層を保持することを強制します。
クラスの移動先となる名前空間を指定すると、PhpStorm は自動的に ターゲット 宛先ディレクトリ フィールドを更新し、そのフィールドには該当クラスを実装するファイルが格納されるフォルダーへのパスが表示されます。
エディターで、移動するクラスにキャレットを配置します。
次のいずれかを実行します:
に進みます。
選択のコンテキストメニューから を選択します。
F6 を押す。
開いた クラスの移動 ダイアログで、クラスを移動するための名前空間とクラスを実装するファイルが保存されるフォルダーを指定します。
クラス <クラス名> を名前空間に移動 フィールドで、選択したクラスを移動する名前空間を指定します。 これは次のようになります。
現在の名前空間にある新しい名前空間。
現在の親にある別の下位の名前空間。
別の親にある既存の名前空間または新しい名前空間。
いずれにしても、クラスを参照する import 文はそれに応じて更新されます。
ターゲット宛先ディレクトリ フィールドで、PhpStorm にクラスを実装するファイルを移動してほしいフォルダーを指定します。
PhpStorm は、プロジェクト内の名前空間が PSR-0/PSR-4 標準に従って配置されていることを前提としており、名前空間間でクラスを移動する際も、この標準に従ってフォルダー構造と名前空間階層を保持することを強制します。
クラスの移動先となる名前空間を指定すると、PhpStorm は自動的に ターゲット 宛先ディレクトリ フィールドを更新し、そのフィールドには該当クラスを実装するファイルが格納されるフォルダーへのパスが表示されます。
ダイアログが開くと、現在のネームスペースに対応するフォルダーへのパスがフィールドに表示されます。
パスは次の形式で表示されます:
...\<project root>\<current namespace folder relative to the project root>新しい名前空間名を指定すると、パスは自動的に更新されます。 ただし、名前空間を別の親名前空間に移動する場合、 設定 ダイアログ (Ctrl+Alt+S) の ディレクトリ ページで関連するフォルダーを Sourcesとしてマークして名前空間構造のルートフォルダーを指定しない限り、PhpStorm は適切なフォルダーを提案しません。 詳細については、 ディレクトリ を参照してください。
次のいずれかを実行します:
フィールドに表示されている事前選択されたパスを受け入れます。
リストから別のパスを選択します。 それらはすべて 名前空間のルートまたは現在のディレクトリから評価されるため、それらのどれかを選択することは安全です。
をクリックし、表示されるダイアログでフォルダーを選択します。
F2 を押し、あらかじめ選択したパスを編集します。 これにより、将来の自動ロードで問題が発生する可能性があることに注意してください。
ファイルに複数のクラスが定義されている場合は、 クラスを別のファイルに抽出する チェックボックスが選択されています。 このデフォルトの選択のままにします。
リファクタリング または プレビュー をクリックしてリファクタリングを開始し、詳細は コードリファクタリング を参照してください。
ドラッグアンドドロップでクラスと名前空間を移動する
コードエディターを使用する代わりに、 プロジェクト ツールウィンドウでファイルとフォルダーを直接ドラッグして、 クラスの移動および 名前空間を移動するリファクタリングを実行できます。
プロジェクトに、 プロジェクトで PHP 名前空間を構成する に従って構成された名前空間ルートがあることを確認してください。
プロジェクト ツールウィンドウで、ファイル (個々のクラスを移動する) またはフォルダー (名前空間全体を移動する) を選択し、目的の場所にドラッグします。

詳細については、 コードリファクタリング を参照してください。
HTTP リクエストを移動する
F6 リファクタリング 移動を使用して、HTTP リクエストをスクラッチから物理ファイルに移動したり、物理ファイル間で移動したりできます。
エディターで、移動するリクエストにキャレットを置き、次のいずれかを実行します:
メインメニューまたはコンテキストメニューから、 を選択します。
Alt+Enter を押して、 HTTP リクエストの移動 インテンションアクション を選択します。
F6 を押す。
開いた HTTP リクエストの移動 ダイアログで、次の手順を実行します。
パス フィールドで、リストから既存の .http ファイルのいずれかを選択するか、
をクリックしてファイルを検索します。
ファイルへのフルパスを手動で入力することもできます。 存在しないファイルの名前を指定すると、指定した名前の新しいファイルが自動的に作成されます。
要求 リストで、移動したいリクエストの横にあるチェックボックスにチェックを入れます。

コピーリファクタリング
コピーリファクタリングを使用すると、クラス、ファイル、ディレクトリをその構造全体とともに 1 つのディレクトリから別のディレクトリに コピーできます。
いずれかのビューで目的の項目を選択するか、エディターで開きます。
次のいずれかを実行します:
メインメニューまたは選択コンテキストメニューから、 を選択します。
F5 を押す。
プロジェクト ツールウィンドウで目的のクラスを選択し、 Ctrl を押したまま目的のクラスにドラッグします。
開いた コピー ダイアログで新しい名前と宛先を指定し、 OK をクリックします。