定数の抽出
定数の抽出リファクタリングにより、ソースコードを読みやすく保守しやすくなります。また、ハードコードされた定数を値や目的について何の説明もしないで使用するのを避けるのに役立ちます。
PHP 定数をインプレースで抽出する
インプレースリファクタリングは、デフォルトで PhpStorm で有効になっています。この設定を変更していない場合は、PHP 用の定数の抽出リファクタリングがエディター内で実行されます。
キャレットを変数の式または宣言内に置き、定数に置き換えます。
以下のいずれか 1 つを実行します:
Ctrl+Alt+C を押します。
メインメニューまたはコンテキストメニューからリファクタリング | 抽出 | 定数を選択します。
現在のキャレット位置に対して複数の式が検出された場合は、式リストが表示されます。その場合は、式をクリックして選択してください。または、Up または Down を押して目的の表現に移動し、Enter を押して選択します。
式が複数出現する場合は、選択した出現のみを置き換えるのか、見つかった出現すべてを新しい定数で置き換えるのかを指定します。
定数を別のクラスで定義する場合は、別のクラスに移動チェックボックスをオンにします。
定数の名前を指定します。リストから名前を選択するか、ボックスに赤い枠線で名前を入力します。
リファクタリングを完了するには、Tab または Enter を押します。
リファクタリングを完了しておらず、変更を取り消したい場合は、Escape を押します。
抽出した定数定義を別のクラスに移動することを選択した場合は、定数の抽出リファクタリングダイアログが開きます。ダイアログで、ターゲットクラスチェックボックスを選択し、フィールドに希望のクラス名を入力します。
ダイアログを使用して定数を抽出する
インプレースリファクタリングが無効の場合、定数の抽出リファクタリングは定数の抽出ダイアログダイアログによって実行されます。
エディターで、定数に置き換える式の中にキャレットを置きます。
Ctrl+Alt+C を押すか、メインメニューまたはエディターのコンテキストメニューから
を選択します。現在のコンテキスト内の複数の式から定数を抽出できる場合、PhpStorm はリスト内のすべての関連式を表示します。リファクタリングを適用する式を選択します。
定数の抽出ダイアログで、名前フィールドに新しい定数の名前を入力します。
リファクタリングを適用する範囲を指定します。
選択した式だけを置き換えるには、出現箇所をすべて置換チェックボックスをオフにします。
選択した式を PhpStorm で置き換えるには、出現箇所をすべて置換チェックボックスをオンにします。
リファクタリングがクラス定義内で呼び出される場合は、抽出された定数の可視性スコープ (英語)(アクセスレベル修飾子) を選択します。デフォルト値を選択したままにすると、定数は修飾子が適用されずに暗黙的に
public
として定義されます。それ以外の場合は、適切なオプションを選択して、定数をpublic
、private
、またはprotected
として明示的にマークできます。可視性スコープの設定は、PHP 言語バージョン 7.1 以降でのみ可能です。設定ダイアログ (Ctrl+Alt+S) の PHP ページで PHP 言語レベルを指定できます。それ以外の場合、リファクタリングが PHP クラス定義の外部で呼び出される場合は、定数構文領域で PHP 定数を定義する方法(英語)を選択してください。
PhpStorm で define() 関数(英語)を介して定数を定義するには、定義を選択します。
PhpStorm でクラス定義の外部にある
const
キーワードを介して定数を定義するには、const を選択します。この方法は、PHP バージョン 5.3.0 で受け入れられているアプローチを維持します。このような定数はコンパイル時に定義されるため、関数、ループ、if ステートメント内ではなく、トップレベルのスコープで宣言する必要があることに注意してください。
定数を別のクラスで定義したい場合は、ターゲットクラスチェックボックスを選択してフィールドに希望のクラス名を入力します。
リファクタリングを開始するには、OK をクリックします。
PHP の例
クラス定数の抽出
クラス定義内で定数が抽出されると、新しい定数は const
キーワードで定義され、self
キーワードで参照されます。
PHP 言語バージョン 7.1 以降では、抽出された定数を public
、private
、protected
として追加でマークできます。
前 | 後 |
---|---|
class const_extraction {
public static function find($params) {
if (isset($params['param_query'])) {
$result = MyDatabase::execute($params['param_query']);
}
}
public static function findAll($params) {
if (isset($params['param_query'])) {
$result = MyDatabase::executeAll($params['param_query']);
}
}
}
|
class const_extraction {
const PARAM_QUERY = 'param_query';
public static function find($params) {
if (isset($params[self::PARAM_QUERY])) {
$result = MyDatabase::execute($params[self::PARAM_QUERY]);
}
}
public static function findAll($params) {
if(isset($params[self::PARAM_QUERY])) {
$result = MyDatabase::executeAll($params[self::PARAM_QUERY]);
}
}
}
|
クラス外の定数の抽出
クラス定義の外で定数が抽出されると、その定数を const
キーワードで定義するか、define()
関数で定義するかを選択できます。
前 | 後 |
---|---|
function find($params) {
if (isset($params['param_query'])) {
$result = MyDatabase::execute($params['param_query']);
}
}
function findAll($params) {
if (isset($params['param_query'])) {
$result = MyDatabase::executeAll($params['param_query']);
}
}
|
const PARAM_QUERY = 'param_query';
function find($params) {
if (isset($params[PARAM_QUERY])) {
$result = MyDatabase::execute($params[PARAM_QUERY]);
}
}
function findAll($params) {
if (isset($params[PARAM_QUERY])) {
$result = MyDatabase::executeAll($params[PARAM_QUERY]);
}
}
define('PARAM_QUERY', 'param_query');
function find($params) {
if(isset($params[PARAM_QUERY])) {
$result = MyDatabase::execute($params[PARAM_QUERY]);
}
}
function findAll($params) {
if(isset($params[PARAM_QUERY])) {
$result = MyDatabase::executeAll($params[PARAM_QUERY]);
}
}
|
JavaScript の例
前 | 後 |
---|---|
Parenizor.method('toString', function () {
return '(' + this.getValue() + ')';
})
|
Parenizor.method('toString', function () {
const string = '(' + this.getValue() + ')';
return string;
})
|
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_preselect_on.png)
コード編集
設定ダイアログのコード編集ページを使用して、一般的なコード編集オプションを構成します。キャレット移動のハイライト一致した括弧このチェックボックスをオンにすると、キャレットを開始点の直前または終了点の直後に配置したときに、PhpStorm 開閉括弧のペアをハイライト表示するになります。HTML タグや XML タグでも機能します。現在の範囲 PhpStorm に現在のキャレット位置に入力されたコードの有効範囲をハイライトさせるには、このチェックボックスを選択します。キャレット上の要素の使用箇所このチェ...
![](https://pleiades.io/icons/phpstorm.png)
定数の抽出ダイアログ
名前このフィールドに、新しい定数の名前を指定します。出現箇所をすべて置換このチェックボックスを選択すると、PhpStorm は選択された式のすべての出現箇所を自動的に置き換えます(選択された式がメソッド内で複数回見つかった場合)。定数構文この領域で、PHP 定数を定義する方法を選択します。選択自体はこのコンテキストにのみ関連するため、この領域は、リファクタリングがクラス定義の外部で呼び出された場合にのみ使用できます。抽出されたクラス定数は、キーワードによってのみ定義されます。定義する: PhpS...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_change_signature_dialog.png)
シグネチャーの変更
シグネチャーの変更リファクタリングは、関数シグネチャーに適用できるいくつかの異なる変更を組み合わせます。このリファクタリングを使用して、次のことができます。関数名と戻り値の型を変更する、パラメーターの追加、削除、並べ替え、パラメーターにデフォルト値を割り当てます、パラメーター名と型を変更する、関数呼び出し階層を介して新しいパラメーターを伝播する、ファンクションシグネチャーを変更すると、PhpStorm は関数のすべての使用箇所を検索し、その変更を反映するように安全に変更できる関数のすべての呼び出...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ps_enableInplaceRefactoringCleared.png)
フィールドの導入
フィールドの導入リファクタリングを使用すると、新しいフィールドを宣言し、選択した式で初期化できます。元の式は、フィールドの使用箇所に置き換えられます。新しいフィールドは、設定ダイアログ () のコードスタイル: PHP ページのコード生成タブで設定されたデフォルトの可視性修飾子を使用して作成されます。その場でフィールドを抽出するフィールドに抽出するコード部分内にキャレットを置きます。を押すか、メインメニューでに移動します。導入する式をフィールドとして選択します。PhpStorm がコード内で複数の...