Привет! А разьве нельзя передать NULL в качестве типизированного аргумента? Вот пример, который у меня не работает на 5.3 PHP: <?php class View{ /** * начначить родительскую вьюшку * * @param View $parent * @return View */ function setParent(View $parent) { $this->_parent = $parent; return $this; } } $view->setParent(null) // тут ошибка Catchable fatal error: Argument 1 passed to Core\View\View::setParent() must be an instance of Core\View\View, null given,
т.к. язык пхп изначально НЕтипизированный, то конструкция function setParent(View $parent) не является родной, скорее это хак для исключений или что-то типа этого. Более правильным был бы подход function setParent($parent = null){ if($parent == null) ... if(is_subclass_of($parent, 'View')) ... if(is_object($parent))... } и т.д... проверок может быть много
Gromo Код (Text): if($parent == null) => Код (Text): if(is_null($parent)) Код (Text): if(is_subclass_of($parent, 'View') Почему не instanceof?
нельзя, меня тоже бесит если только так извернуться: PHP: <?php class View{ /** * начначить родительскую вьюшку * * @param View $parent * @return View */ function setParent(View $parent = null) { $this->_parent = $parent; return $this; } } $view->setParent();
выдернул первые попавшиеся проверки, связанные с классами и объектами. там приписка, что проверок может быть очень много, и совершенно разных.