今まで何気なくPHP7を使ってて、気づいていなかったことがあったのでメモがてら。PHP7以降では関数の戻り値に型が指定できるようになっているとのこと。
functionの宣言時に”: 型名”をつけるだけで戻り値の型を指定できる
やり方は簡単で、下記のように書くことで戻り値の型を指定できる:
1 2 3 4 5 6 7 8 9 10 11 |
<?php function getHoge(): string { return 'hoge'; } echo getHoge(); // print: hoge ?> |
これは戻り値をstringに指定した事例。他にもintやarray, float …等様々な型が指定可能。
Nullable(Null許可)な型指定は”: ?型名”で実現できる
具体例は下記:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php function getHoge(int $type = 0): ?string { if ($type === 0) { return null; } else { return 'hoge'; } } echo getHoge(0); // print: echo getHoge(1); // print: hoge ?> |
型名を指定する直前に?をつけるだけでいける。
戻り値の型指定ができることで受けられるメリット
大きくは3つあると思っている:
- PHP7で大規模な開発をする際に、実装者による予期せぬ型変換が無くなる
- 可読性UP(関数定義をチラ見しただけで、どういう値を返すfunctionなのかがわかりやすい)
- テストコードを書く際に、戻り値の型チェックをせずに済むようになる
余談
PHP7になってからはPHP特有の曖昧さを減らす機能が増えてきたように感じる。スコープの厳密さも加わっているし、compact()で指定された変数が前段で定義されてないとエラー出すようになっているし、なかなか良いよPHP。
参考)戻り値の型宣言