[PHP] 引数が省略可能な関数定義の方法。JavaとJavaScriptとの比較もしてみました。
今日はPHPを使っていて、ふと引数の省略はPHPでは出来るのかな?と思い、調べてみました。
出来るんですね。便利です。その方法を忘れないように、残しておきたいと思います。

PHPの柔軟性をここでも感じました。ゆるーい感じで便利ですねー。
言語によって、少しずつ違いがあって面白いですね。
柔軟性でいうと、PHPやJavaScriptがJavaよりあるようです。 柔軟性がある分、意図せぬところでバグッたりするので、大変な面もありますが。
次もブログに掲載できれば良いなぁと思います(・∀・)
出来るんですね。便利です。その方法を忘れないように、残しておきたいと思います。

PHPで引数省略可能な関数を定義する方法
以下のように、関数の引数にあらかじめ値を設定すると、 その値が設定された引数は省略可能となるようです。
<?php
// 第2引数(toUpperCase)が省略可能な関数
function getName ($id, $toUpperCase = false) {
// 引数($id)に合わせて、名前を取得する。
$name = "";
switch ($id) {
case 1:
$name = "Bob";
break;
case 2:
$name = "Smith";
break;
case 3:
$name = "Androf";
break;
default:
$name = "No Name";
break;
}
// 第2引数でtrueが設定されたら、名前を大文字にする。
if ($toUpperCase) {
$name = strtoupper($name);
}
return $name;
}
echo getName(1) . "\n"; // 引数省略の例
echo getName(2) . "\n"; // 引数省略の例
echo getName(3, true) . "\n"; // 引数省略しないの例
?>
PHPの柔軟性をここでも感じました。ゆるーい感じで便利ですねー。
javaとJavaScriptで同様の事をやる場合はこんな感じ
ちなみにJavaとJavaScriptの場合には、以下のような感じに引数省略を実現します。Javaの場合
いまのところ引数省略は出来ないので、オーバーロードを用いて、引数ありとなしの2つの メソッド(関数)を定義します。
public String getName (int id) {
this.getName(id, false);
}
public String getName (int id, boolean toUpperCase) {
// 名前を返す処理を記述する
}
JavaScriptの場合
JavaScriptでは、関数に引数が定義されていても、呼び出し側が引数を指定しない場合には、 その引数はundefinedとなります。
function getName (id, toUpperCase) {
// 名前を返す処理を記述する
}
// 呼び出し側の例
// 引数を指定しない呼び出し
var name1 = getName (1, true);
// 第2引数(toUpperCase)は、undefinedとなる
var name2 = getName (2);
言語によって、少しずつ違いがあって面白いですね。
柔軟性でいうと、PHPやJavaScriptがJavaよりあるようです。 柔軟性がある分、意図せぬところでバグッたりするので、大変な面もありますが。
最後に
PHPという言語は、面白いですね。 現在、絶賛利用中で、学び中なので、もっともっと便利な点を学びたいと思います。次もブログに掲載できれば良いなぁと思います(・∀・)





