Estoy tratando de implementar Type Hinting de PHP5 en una de mis clases,
class ClassA {
public function method_a (ClassB $b)
{}
}
class ClassB {}
class ClassWrong{}
Uso Correcto:
$a = new ClassA;
$a->method_a(new ClassB);
produciendo error:
$a = new ClassA;
$a->method_a(new ClassWrong);
Error fatal detectable: el argumento 1 pasado a ClassA :: method_a () debe ser una instancia de ClassB, instancia de ClassWrong dada ...
¿Es posible detectar ese error (ya que dice "capturable")? y si es así como
php
fatal-error
type-hinting
hoball
fuente
fuente
E_RECOVERABLE_ERROR
) ya que estos se detectan a partir de PHP 7 ..Respuestas:
Actualización: Este ya no es un error fatal detectable en php 7. En cambio, se lanza una "excepción". Una "excepción" (entre comillas de miedo) que no se deriva de Exception sino de Error ; sigue siendo un Throwable y se puede manejar con un bloque try-catch normal. ver https://wiki.php.net/rfc/throwable-interface
P.ej
huellas dactilares
Respuesta anterior para versiones anteriores a php7:
http://docs.php.net/errorfunc.constants dice:
ver también: http://derickrethans.nl/erecoverableerror.html
p.ej
huellas dactilares
editar: Pero puede "convertirlo" en una excepción que puede manejar con un bloque try-catch
ver: http://docs.php.net/ErrorException
fuente