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の型付け力は非常にゆるいものなのでした。


コメントを残す

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