PHP7以降は関数の戻り値に型を指定できるようになったので、試してみた

2020/03/22

author

masyus

今まで何気なくPHP7を使っていましたが、PHP7以降では関数の戻り値に型が指定できるようになっていました。メモがてら解説していきます。

関数宣言時に": 型名"をつけるだけで戻り値の型を指定可能

やり方は簡単です。下記のように書くことで戻り値の型を指定できます。

<?php

// ": string"が戻り値の型指定
function getHoge(): string
{
    return 'hoge';
}

echo getHoge();

// print: hoge
?>

上記は戻り値の型をstringに指定した事例ですが、他にもintやarray, float …等様々な型が指定できます。

Nullable(Null許可)な型指定は”: ?型名”で実現可能

こちらも簡単です。型名の前に?をつけることでNullableを指定できます。

<?php

function getHoge(int $type = 0): ?string
{
    return $type === 0 ? null : 'hoge';
}

echo getHoge(0);

// print: 

echo getHoge(1);

// print: hoge
?>

戻り値の型指定ができることで享受できるメリット

大きく3つあります。

  • 大規模な開発をする際に、実装者による想定していない型変換がされなくなる
  • 可読性UP(関数定義を見ただけで、どういう値を返す関数なのかがわかりやすい)
  • テストコードを書く際に、戻り値の型チェックをせずに済むようになる

余談

今回紹介した内容に限らず、PHP7以降は今までPHP特有だった型の扱いの曖昧さなどを減らす機能が増えてきたように感じます。スコープの厳密さも加わってきましたし、compact()で指定された変数が前段で定義されてないとエラー出すようにもなりました。フロントエンド界隈でもTypeScriptによる型チェックが進化していますし、厳密なコードを書く能力は今後必須となるのでしょう。

参考