PHP5を試してみる - 型情報の指定
サンプルは、EXPERIENCEで実際に確認できるようにしてますので、気になる方は見てみてください。
これも個人的にはかなり「イイ」感じです。型情報を持たないPHPで「クラス型情報の指定」が可能になります。PHP5で導入される例外処理でcatchする際に型情報を指定することが出来ますが、それに関連するものと思われます。
メソッドの引数を定義する際、Javaと同様、クラス型を指定することで渡されるべき「型」を制限することが出来ます。
●05.ClassTypeHints.php5
<?php
interface Foo {
function a(Foo $foo);
}
interface Bar {
function b(Bar $bar);
}
class FooBar implements Foo, Bar {
function a(Foo $foo) {
echo "FooBar::a() called\n";
}
function b(Bar $bar) {
echo "FooBar::b() called\n";
}
}
class Baz { }
$a = new FooBar;
$b = new FooBar;
echo "<pre>";
$a->a($b);
$a->b($b);
echo "</pre>";
?>
<hr>
<?php
show_source("./05.ClassTypeHints.php");
?>
PHP4でデザインパターンを試してみたりしていますが、PHP4では型情報を指定することが出来ません(instanceOfメソッドのようなもの作って、型チェックを作り込めば別ですが。。。)。極端な話、メソッド引数として全く異なる(期待しない・されない)クラスを渡すことが出来てしまいますので、利用者側が意識する必要がありましたが、PHP5からはこの辺りがかなり改善されそうです。
|