関数の引数にnullを許容する場合2通りあって
PHP7.0から
function yourName(string $name = null) {
if (!name) {
print '名無しです';
} else {
print $name . 'です';
}
}
PHP7.1から
function yourName(?string $name) {
if (!name) {
print '名無しです';
} else {
print $name . 'です';
}
}
となる。
しかし
PHP7.1の方で
yourName();
と実行すると
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function yourName()
とエラーになる。
デフォルト値がない場合でもokなんじゃないの?違うの?としばらく分からなかったのですが
引数のnullを許容するとういことなのかと
yourName(null);
とすればきちんと通ります。
つまり
yourName();
をPHP7.1で実行するにはデフォルト値を設定しなければいけないみたいです。そんなのあたりまでだろと思われるかもしれませんが僕は理解していませんでした。。。
function yourName(?string $name = null) {
if (!name) {
print '名無しです';
} else {
print $name . 'です';
}
}
ん〜難しい。
間違っていたらコメントで指摘してもらえると助かりますm(_ _)m