<?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