Código de PHP - Generar instancias de varias clases

Imágen de perfil

Generar instancias de varias clasesgráfica de visualizaciones


PHP

Publicado el 07 de Noviembre del 2010 por Xavi
4.582 visualizaciones desde el 07 de Noviembre del 2010. Una media de 21 por semana
Aquí se muestra como generar instancias de varias clases desde una sola clase, pudiendo acceder a cualquier de las clases instanciadas.

Versión 1

Publicado el 07 de Noviembre del 2010gráfica de visualizaciones de la versión: Versión 1
4.583 visualizaciones desde el 07 de Noviembre del 2010. Una media de 21 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?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
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s1998