Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema con instanciación de multiples clases

Estas en el tema de Problema con instanciación de multiples clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente, tengo un problema con una especie de cms que estoy creando para un proyecto y luego para liberarlo Básicamente el problema es que ...
  #1 (permalink)  
Antiguo 02/01/2013, 22:53
 
Fecha de Ingreso: enero-2013
Mensajes: 1
Antigüedad: 11 años, 4 meses
Puntos: 0
Pregunta Problema con instanciación de multiples clases

Hola gente, tengo un problema con una especie de cms que estoy creando para un proyecto y luego para liberarlo
Básicamente el problema es que no se como instanciar una clase cuyo nombre traigo desde una base de datos.
Tengo una serie de carpetas que son modulos de estas carpetas tengo unos index que contienen clases que hacen distintas cosas.
Cuando cargo un modulo funciona bien pero cuando carga varios empieza funcionar mal.

Primero, no se si en php puedo ir cargando distintas clases con el mismo mombre porque eso me simplificaría todo pero eso no me funciono.
Digamos que tengo una clase Modulos que carga distintas clases Modulo todas con el mismo nombre y un constructor que hace lo que tenga que hacer en cada caso.

De no ser así necesitaría saber como instanciar una clase de la que no se el nombre.

dejo un ejemplo simplificado de còdigo para ver si se entiende mas.

class Modules{

public function __construct(){

$this -> showModules();

}

private function showModules(){

$db = new MySQL(); //instancio la clase MySQL

$query = $db->query("SELECT *
FROM modules WHERE (aqui van varias condiciones que no son el problema");

while($result = $db->fetch_array($query)){

$module = $result['module'];

include ("modules/$module/index.php");
$m = new Module();

mysql_close($result);
}
}

//archivo modules/test1/index.php
<?php
class Module{

public function __construct(){

$var= "Module Test1";
echo $var;
}
}
?>

//archivo modules/test2/index.php
<?php
class Module{

public function __construct(){

$var= "Module Test2";
echo $var;
}
}
?>
racias por las respuestas si las hubiera ja.
  #2 (permalink)  
Antiguo 02/01/2013, 23:26
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema con instanciación de multiples clases

bueno no se si entendí bien, pero en teoría en la solución de tu problema la tiene un concepto de OOP llamado herencia

Código PHP:
Ver original
  1. class Module
  2. {
  3. /*lo comun para todos los modulos*/
  4. }

Código PHP:
Ver original
  1. class FooModule extends Module
  2. {
  3.     /*lo que necesitas de este modulo en concreto y tienes las funcionalidades del padre*/
  4. }


Código PHP:
Ver original
  1. class BazModule extends Module
  2. {
  3.     /*lo que necesitas de este modulo en concreto y tienes las funcionalidades del padre*/
  4. }

espero que haya entendido bien tu problema, saludos

Edit

umm creo que si entendi mal como siempre aparte acá es tarde, clases con el mismo nombre no vas a poder tener ya que te va a dar error de redeclaración de clases, al menos que uses namespaces, sin embargo lo que estas haciendo los modulos que traes en el query todos son distintos?? es decir no se repite ningun nombre?? porque si se repite vas a tener el problema que te estoy diciendo, sino siempre puedes hacer

Código PHP:
Ver original
  1. //supongamos en que
  2. if(is_file('rutaa' . $module) && class_exist($module)) {
  3.     $m = new $module();
  4. }
de manera que te haga la instancia de la clase que deseas, espero que ahora si haya puesto una solución real, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Última edición por carlos_belisario; 02/01/2013 a las 23:41
  #3 (permalink)  
Antiguo 03/01/2013, 04:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con instanciación de multiples clases

Si utilizas namespaces y guardas en la bbdd el FQCN te evitarías el problema de la colisión de nombres y si sigues el estándar PSR-0 te evitas el include del while con lo que simplemente instancias la clase.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: clases, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:56.