PHPのゆるーい型付け、タイプヒンティング
PHP5で導入されたタイプヒンティング。関数の引数に型情報を書くことができる。
<? php class Entertainment {} class Clown extends Entertainment {} class Job {} function handleEntertainment(Entertainment $a, callable $callback = NULL) { echo "Handling " . get_class($a) . " fun\n"; if ($callback !== NULL) { $callback(); } } $callback = function() { // なんかする }; handleEntertainment(new Clown); // 動作する handleEntertainment(new Job, $callback); // ランタイムエラー ?>
関数に型を付けることで、引数として与えるオブジェクトの種類を強制することができる。ただしスクリプト言語のサガで、実行時にしかエラーを検出できないのが欠点だ。TypeScriptみたいにコンパイルしないからしゃーないよねー。
更にもう一つ欠点がある。なんとスカラー型は使用できない。つまりint, stringを型情報として書くことはできない、、ってどこまで片手落ちなんじゃ!
もちろん型情報を省略することもできるわけで、PHPの型付け力は非常にゆるいものなのでした。