Вот еще один пример, где это требуется ...
Я создал класс для реализации блокировки записи. Записи являются одним из нескольких типов объектов. Класс блокировки имеет несколько методов, которым требуется объект (тот, который должен быть заблокирован), но ему все равно, какой это тип объекта.
* 1005 Е.Г. *
public static function lockRecord($record, User $user, $timeout=null)
{
if(!is_object($record)) throw new \InvalidException("Argument 1 must be an object.");
$lock=new Lock();
$lock->setRecord($record);
$lock->setUser($user);
$lock->setTimeout($timeout);
$lock->activate();
return($lock);
}
Вы увидите, что мое решение заключалось в том, чтобы использовать is_object () и выдавать исключение, но я бы предпочел сделать это с помощью подсказок типов.
Хорошо, так что не конец света, но я думаю, что это позор.