[PHP7.1]タイプヒンティングで関数の戻り値にvoidを指定したときのふるまい

PHP7.1では、タイプヒンティングで関数の戻り値で値を返さないことを明示するために、voidの指定が可能です。
voidを指定したときに、正しく実行できるコード、エラーが出るコードを確認してみました。

下記はOKパターンです。

<?php

// OK: return文に戻り値を指定しないコードは正しく実行できる
function foo_ok2() : void
{
    return;
}


// OK: return文自体を書かなくてもよい
function foo_ok1() : void
{
    // do nothing.
}

一方、下記コードはNGです。

// NG: "void"のタイプヒンティングでは、空文字列を返せない
function foo_ng($option) : void
{
    return "";
}

// NG: "void"のタイプヒンティングでは、nullを返せない
function foo_ng2($option) : void
{
    return null;
}

NGパターンのコードを書いた場合、実行時に下記のエラーが出力されます。

PHP Fatal error:  
 A void function must not return a value

PHP Fatal error: 
 A void function must not return a value 
 (did you mean "return;" instead of "return null;"?)

関連記事

コメントを残す

メールアドレスが公開されることはありません。