引数のデフォルト値について

自作関数(ユーザ定義関数)で、後から引数を追加したいときが良くあります。
定義側と実行側が同じファイルなら問題ないですが、別ファイルの場合、
同時にファイル更新しないとエラーになってしまいます。
アクセスが多いサイトでの更新で、エラーを出さないのは至難の業・・・・・

エラーを出さないためには、別関数を定義したり、定義時に引数を記述せず
func_get_args()で取得する方法もありますが、「引数のデフォルト値」が
使えます。

たとえばこの関数を、

function num($a){
$a = ($a + 2) * $a;
return $a;
}

これに変えたい場合、

function num($a, $b){
$a = ($a + 2) * $a;
$a += $b;
return $a;
}

まず定義側でこうします。

function num($a, $b = 5){
$a = ($a + 2) * $a;
$a += $b;
return $a;
}

第二引数は、引数が与えられなかった場合の「デフォルト値」なので、
第一引数のみでも実行可能です。つまりエラーが出ません。

この間に、実行側のファイルを第二引数付きに変更し、最終的に
定義側の第二引数を本来の引数「num($a, $b)」に書き換えれば変更完了!

まぁ、そもそもデフォルト値なんで、最終的に書き換えなくてもいいんですが、
まぁ、バグを出さないためにも、消しとこう。

ちなみに、引数を削除したい場合は・・・・
そう、定義側の削除したい引数をデフォルト値に変え、実行側で引数を削除し、
最終的に定義側でも削除する、って感じですね。

 

コメントを残す