【PhpStorm】受け取る引数の順番を入れ替える際、関数やメソッドの呼び出し元で定義されている引数の順番も連動して入れ替える方法

  • 2023年6月2日
  • 2023年6月5日
  • PhpStorm

 関数やメソッドを作った後、引数の順番を入れ替えたくなる時があります。これは特に次の様なデフォルト引数に関する場面で起こります。

<?php
// なんとなく $border, $align と並べた
function renderBox($x, $y, $w, $h, $border = 'solid', $align = 'L2R') {
}


// 実際は $align が色々な値で呼ばれていて、$border はデフォルト値ばかりで呼ばれている
// 次の様に順番を変えたくなる
function renderBox($x, $y, $w, $h, $border = 'solid', $align = 'L2R') {
}

 名前付き引数が使えない前提ではある引数の手前にある引数を何度も変更する場合、中間の引数を毎回セットする必要があります。これが繰り返されるとせっかくデフォルト値があるのに活かされず無駄に可読性と保守性を下げてしまいます。これを解消するならば引数の順番を入れ替えるのが効果的です。

 PhpStormのリファクタリング機能を使うことで誤ることなく引数の順番を入れ替え、呼び出し側もそれにならった引数の渡し方にすることができます。これは次の様にできます。

  1. 関数またはメソッドの引数上でカーソルを置きます。
  2. Ctrl + Alt + Shift + T を押してコンテキストメニューを開き、リファクタリングを選びます
  3. メニューから”シグネチャーの/kbd変更を選択します。
  4. シグネチャーの変更のダイアログが表示されます。ここで引数の順序を変更することができます。それぞれの引数を選択し、上下の矢印ボタンを使用して引数の順序を変更します。
  5. 変更が完了したらリファクタリングボタンを押して変更を適用します。

 これで好きなように安全に素早く引数の順番を変えられます。注意点として実行時に呼び出す関数が定まるようなパターンではリファクタリングが適用されないという点があります。例えば次の場合は引数の順番を変更してもらえません。

<?php

function abc($a, $b, $c)
{
    return $a . $b . $c;
}
// こういう普通の呼び出し方は問題なくリファクタリングされます
echo abc('a', 'b', 'c') . PHP_EOL;
// 文字列で呼ぶような実質動的な呼び出し方はリファクタリングされません
echo 'abc'('a', 'b', 'c') . PHP_EOL;
// もちろん変数に入れた関数名から呼ぶような方法もリファクタリングされません
$abc = 'abc';
echo $abc('a', 'b', 'c') . PHP_EOL;

 PhpStorm のリファクタリング機能は完璧ではありませんが人間の手でやるよりも高速で正確です。PhPStormは他にもリファクタリングを容易にするツールを提供しているので都度調べて活用するとプログラミングがだいぶ楽になります。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG