<?php
/**
* Ejemplo obtenido de la web:
* http://www.serversidemagazine.com/php/how-to-inherit-from-multiple-objects-workaround
*
* Aqui se muestra como generar instancias de varias clases desde una sola clase,
* pudiendo acceder a cualquier de las clases instanciadas.
*/
class A { public function class_a()
{ return 'this is object a';
}
}
class B { public function class_b()
{ return 'this is object b';
}
}
class C { public function class_c()
{ return 'this is object c';
}
}
abstract class SuperObject
{ public function __construct()
{ # Si el numero de argumentos recibidos por la funcion es superior a 0
if(func_num_args()>0)
{ # Cogemos la lista de parametros recibidos en la funcion
$parameters=func_get_args();
# Recorremos un bucle por todos los parametros recibidos en la funcion
for($i=0;$i<count($parameters);$i++)
{ # Cargamos la clase
$this->extendClass($parameters[$i]);
}
}
}
public function extendClass($class_name)
{ # Si la clase existe...
if(class_exists($class_name))
$this->$class_name = new $class_name;
}
}
class MyObject extends SuperObject
{ public function __construct()
{ # Se generan en el constructor
parent::__construct('A','B'); }
}
$mo = new MyObject();
$mo->extendClass('C');echo "<br>".$mo->A->class_a();
echo "<br>".$mo->B->class_b();
echo "<br>".$mo->C->class_c();
?>
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios