[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という言語は、面白いですね。 現在、絶賛利用中で、学び中なので、もっともっと便利な点を学びたいと思います。次もブログに掲載できれば良いなぁと思います(・∀・)