Alusión de Tipos??
Type Hinting
PHP 5 introduce Type Hinting. Las funciones ahora estan en la capacidad de forzar a que los parametros sean objetos(especificando el nombre de la clase en el prototipo de la función) ó arrays (desde PHP 5.1).
Código PHP:
<?php
// Una clase de Ejemplo
class MyClass
{
/**
* Una función de prueba
*
* El primer parametro debe ser un objeto de la clase OtherClass
*/
public function test(OtherClass $otherclass) {
echo $otherclass->var;
}
/**
* Otra función de prueba
*
* El primer parámetro debe ser un array
*/
public function test_array(array $input_array) {
print_r($input_array);
}
}
// Otra clase de Ejemplo
class OtherClass {
public $var = 'Hello World';
}
?>
Cuando falla el type hint se produce un error fatal.
Código PHP:
<?php
// Una instancia de cada clase
$myclass = new MyClass;
$otherclass = new OtherClass;
// Fatal Error: Argumento 1 debe ser de la clase OtherClass
$myclass->test('hello');
// Fatal Error: argumento 1 debe ser una instancia de la clase OtherClass
$foo = new stdClass;
$myclass->test($foo);
// Fatal Error: Argumento 1 no debe ser nulo
$myclass->test(null);
// Funciona: imprime Hello World
$myclass->test($otherclass);
// Fatal Error: Argumento 1 debe ser un array
$myclass->test_array('a string');
// Trabaja: Imprime el array
$myclass->test_array(array('a', 'b', 'c'));
?>
Type hinting también trabaja con funciones:
Código PHP:
<?php
// Una clase de Ejemplo
class MyClass {
public $var = 'Hello World';
}
/**
* Una funcion de prueba
*
* El primer argumento debe ser un objeto de la clase MyClass
*/
function MyFunction (MyClass $foo) {
echo $foo->var;
}
// Trabaja!
$myclass = new MyClass;
MyFunction($myclass);
?>