Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

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