Sugerencia de tipo de clase ( Type Hinting)

Otra de las novedades de PHP 5 es la sugerencia de tipos de clase. Por regla general, al pasar un parámetro a una función, no se pasa el tipo de dicho parámetro. Con la sugerencia de tipos de clase, podemos especificar el tipo de clase que debería pasarse y, si no es el que realmente se pasa, se genera un error. La comprobación de tipos es equivalente a instanceof.

Veamos un ejemplo:

<?php
   class A {};
   function comprobar_tipo(A $clase) {
      //
   }
   $p = array();
   comprobar_tipo($p);
?>

Este ejemplo sugiere que $clase tiene que ser una instancia de la clase A. Si pasamos una instancia de la clase A como array se genera el siguiente error capturable:

Catchable fatal error: Argument 1 passed to comprobar_tipo() must
be an instance of A, array given, called in check_hint.php on line 11
and defined in check_hint.php on line 2

El error nos dice que es un error fatal que se podría capturar: el argumento que pasamos a la función 'comprobar_tipo()' requiere una instancia del objeto A, se ha pasado un array, llamado en ...

Aquí tenemos otro ejemplo:

    <?php
   class A {
      public $Dato;
      public $DatoClaseB;
      public function __construct($dato, B $datoClaseB) {
         $this->Dato = $dato;
         $this->DatoClaseB = $datoClaseB;
      }
   }
   class B
   {
      public $Dato;
      public function __construct($dato) {
         $this->Dato = $dato;
      }
   }
   $instanciaB = new B(100);
   $instanciaA = new A(200, $instanciaB); // Correcto
   $instanciaA2 = new A(200, 'texto'); // Error
?>

Este es un ejemplo más complejo donde en la creación de la variable $instanciaA2 pasamos al constructor una variable que no es una instancia del objeto B (una cadena) dando un error de fatal.

results matching ""

    No results matching ""