darudaru

だるだるしてるエンジニア

PHPのNullableな型宣言

最近PHP7でプログラムを書いたりしてます。

PHP7から使えるようになった型宣言を使って、型で最初から縛れるのはいいなー、気持ちいいなー、と思いながらプログラミングしてたのですが、
「あれ、でもnullの可能性がある場合はどんな風に型宣言すればいいんだっけ?」って思って調べたまとめ。

PHP7.1以上の場合

型の前に?をつければいい。

<?php

function test(?string $text): ?string{
    return $text;
}

var_dump(test('hogehoge')); // => string(8) "hogehoge"
var_dump(test(null));  // => NULL

PHP7.0の場合

nullableな型宣言はサポートされてません。
ただ、引数については下記のようにデフォルト引数を使うことで、型宣言をしつつnullを許容することはできます。

<?php

function test(string $text = null) {
    return $text;
}

var_dump(test('hogehoge')); // => string(8) "hogehoge"
var_dump(test(null));  // => NULL

無理やり感はありますが、この方法以外にやりようは無さそう。

PHP7.0は2018年12月でセキュリティサポートは切れてしまうこともあるので、PHP7.0の抜け道を探すよりもPHP7.1以上にアップデートしていった方がよいですね。