Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/06/2007, 09:11
usermax
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 5 meses
Puntos: 11
Re: Comunicación de clases

Funciona perfecto, muchas gracias
Según lo que me contesto gatorV estuve averiguando un poco de teoría (siempre me gusta terner el por qué de cada cosa :/) y eso se llama "Type Hints" y en este foro encontré esta entrada:

http://www.forosdelweb.com/showthread.php?p=1951067 o pueden leer algo aquí
www.hackingballz.com/manual-php/language.oop5.typehinting.html

Cita:
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);
?>
Siempre se aprende algo nuevo.
Hasta la próxima

Última edición por usermax; 02/06/2007 a las 09:21