Я пытаюсь реализовать подсказку типа PHP5 в одном из моих классов,
class ClassA {
public function method_a (ClassB $b)
{}
}
class ClassB {}
class ClassWrong{}
Правильное использование:
$a = new ClassA;
$a->method_a(new ClassB);
производит ошибку:
$a = new ClassA;
$a->method_a(new ClassWrong);
Уловимая фатальная ошибка: аргумент 1, переданный в ClassA :: method_a (), должен быть экземпляром ClassB, задан экземпляр ClassWrong ...
Можно ли отловить эту ошибку (поскольку в ней написано «ловится»)? и если да, то как?
php
fatal-error
type-hinting
хобол
источник
источник
E_RECOVERABLE_ERROR
), поскольку они обнаруживаются, начиная с PHP 7.Ответы:
Обновление: это больше не является фатальной ошибкой в php 7. Вместо этого выдается «исключение». «Исключение» (в кавычках), которое не является производным от Exception, а Error ; это все еще Throwable, и с ним можно справиться с помощью обычного блока try-catch. см. https://wiki.php.net/rfc/throwable-interface
Например
отпечатки
Старый ответ для версий до php7:
http://docs.php.net/errorfunc.constants говорит:
см. также: http://derickrethans.nl/erecoverableerror.html
например
отпечатки
edit: Но вы можете "сделать" это исключением, которое вы можете обработать с помощью блока try-catch
см .: http://docs.php.net/ErrorException
источник