PHP タイプヒンティング(型宣言)を記載して引数、戻り値のデータ型を指定する


目的

  • タイプヒンティングを用いて引数と戻り値のデータ型を指定する方法をまとめる

情報

方法

  • 下記のように記載することで引数の型を指定する事ができる。

    function 関数名(型名 変数名) {
        関数内部の処理
    }
    
  • 下記のように記載することで戻り値の型を指定する事ができる。

    function 関数名(): 型名 {
        関数内部の処理
    }
    

利用できる型(PHPのバージョンにより異なる。下記はPHP7)

型名 概要
bool 真偽値
float 浮動小数点
int 整数
string 文字列
array 配列
callble コールバック関数
クラス名/インターフェイス名
self 現在のクラス

引数と戻り値の型を指定する例

  • 数字を受け取って帰すだけの関数を定義する。
  • 引数はint型を想定する。戻り値はint型を返すことを想定する。

    function getNum(int $num): int
    {
        return $num;
    }
    
    echo getNum(1);
    // 1が出力される
    
  • 引数はint型を想定して関数を定義しているが、文字列を与えてみる。

    function getNum(int $num): int
    {
        return $num;
    }
    
    echo getNum('strです');
    
  • 下記のエラーが出力される。(関数の引数の型をint型で固定しているので文字列を渡すとエラーになる)

    PHP Fatal error:  Uncaught TypeError: getNum(): Argument #1 ($num) must be of type int, string given, called in /workspace/Main.php on line 10 and defined in /workspace/Main.php:5
    
  • 次に定義した関数の中で文字列を返してみる。

    function getNum(int $num): int
    {
        return 'strです';
    }
    
    echo getNum(1);
    
  • 下記のエラーが出力される。(関数の戻り値の型をint型で固定しているので文字列を返すようにするとエラーになる)

まとめ

  • ケース・バイ・ケースではあるが、タイプヒンティング(型宣言)は使ったほうが良いと思った。
  • 己のソースの記載ミスを早期に発見できてバグを減らすことができると思った。

参考文献

  • 独習PHP