PHPの関数の引数メモ(デフォルト値の定数、タイプヒンティングのnull)
関数の引数の挙動メモ。
デフォルト値
デフォルト値は、定数式である必要があり、 (例えば) 変数やクラスのメンバーであってはなりません。
http://php.net/manual/ja/functions.arguments.php#functions.arguments.default
定数ならばよいということで、定数値は使える。
<?php const FOO = "foooooooo!"; function hoge($str = FOO) { echo $str."\n"; } hoge(); // foooooooo!
定数ではない式を入れることはできない。
<?php function hoge($number = 1+2+3) { echo $number."\n"; } hoge(); // Parse error: syntax error, unexpected '+', expecting ')'
タイプヒンティングのnull
タイプヒンティングを設定してもデフォルト値のnullは許容される。
<?php function hoge(array $arr = null) { var_dump($arr); } hoge(); // NULL hoge(null); // NULL
ただしデフォルト値を設定しない場合はnullを引数に渡せない。
<?php function fuga(array $arr) { var_dump($arr); } fuga(null); // Catchable fatal error: Argument 1 passed to fuga() must be of the type array, none given