Уточнение типа класса (Class Type Hints)
Оставаясь слабо типизированным языком, PHP5 предоставляет возможность использовать уточнения типа класса (class type hints) для указания ожидаемого класса объекта, передаваемого методу в качестве параметра.
Пример:
interface Foo {
function a(Foo $foo);
}
interface Bar {
function b(Bar $bar);
}
class FooBar implements Foo, Bar {
function a(Foo $foo) {
// ...
}
function b(Bar $bar) {
// ...
}
}
$a = new FooBar;
$b = new FooBar;
$a->a($b);
$a->b($b);
?>
Уточнения типов класса не проверяются не при компиляции, как в большинстве языков со строгой типизацией, а во время исполнения. Это означает, что следующие фрагменты кода эквивалентны:
function foo(ClassName $object) {
// ...
}
?>
function foo($object) {
if (!($object instanceof ClassName)) {
die("Argument 1 must be an instance of ClassName");
}
}
?>
Данный синтаксис применим только к объектам/классам, но не к встроенным типам данных.
Март
1,
2008
— Filed under: PHP
Метки: Class Type Hints, синтаксис
