[PHP]タイプヒンティングに使える型・使えない型

PHPのタイプヒンティング

PHP5では、関数・メソッドのパラメーターの型を指定する、タイプヒンティングが利用できます。
例:

これを実行すると、「PHP Catchable fatal error: Argument 1 passed to type_test() must be of the type array, integer given」というエラーが表示されます。

array型を想定しているパラメーターにスカラー型(この場合は整数)を与えているからです。

以下、PHPのタイプヒンティングにおいて使える型・使えない型を整理します。なお、前提とするPHPのバージョンは5.4です。

タイプヒンティングに使える型

PHPでタイプヒンティングに使えるのは、「オブジェクトもしくはインターフェイス、配列 (PHP 5.1 以降)、callable (PHP 5.4 以降) 」です(PHPマニュアル – タイプヒンティング)。

「オブジェクト」は任意のクラスのオブジェクトのこと。「インターフェイス」は、任意のインターフェイスを実装したクラスのオブジェクトのことです。
例:

配列はそのまんま配列(array型)のことですね。

callableに関しては、ちゃんとした説明の自信はありませんが、以下の例のような動きをします。

引数として与えた文字列や配列を元に関数を探し、その関数を呼び出し可能であればcallableということになるようです。

タイプヒンティングに使えない型

まず、スカラー型が使えません。スカラー型とは、論理値(boolean)・整数(integer)・浮動小数点数(float/double)・文字列(string)のことです。

また、任意のトレイトを継承するオブジェクトか否かはタイプヒンティングで指定することはできません。

コメントを残す