Хотя вы не можете использовать целые иерархии классов в качестве подсказки типа. Вы можете использовать ключевые слова self
и parent
, чтобы применить нечто подобное в определенных ситуациях.
цитирование r dot wilczek в web-appz dot de из комментариев к PHP-руководству:
<?php
interface Foo
{
public function baz(self $object);
}
class Bar implements Foo
{
public function baz(self $object)
{
//
}
}
?>
Что сейчас не упоминалось, так это то, что вы также можете использовать «родитель» в качестве шрифта. Пример с интерфейсом:
<?php
interface Foo
{
public function baz(parent $object);
}
class Baz {}
class Bar extends Baz implements Foo
{
public function baz(parent $object)
{
//
}
}
?>
Bar :: baz () теперь будет принимать любой экземпляр Baz.
Если Бар не является наследником какого-либо класса (не «расширяет»), PHP выдаст фатальную ошибку:
«Невозможно получить доступ к parent ::, если у текущего класса нет родителя».