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

Tratamiento de clases dinámicamente

Estas en el tema de Tratamiento de clases dinámicamente en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, llevo un tiempo intentando manejar clases dinámicamente, ya que tengo unas clases que interactúan con la base de datos, con la misma estructura pero ...
  #1 (permalink)  
Antiguo 29/08/2012, 05:05
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 4 meses
Puntos: 2
Tratamiento de clases dinámicamente

Hola,

llevo un tiempo intentando manejar clases dinámicamente, ya que tengo unas clases que interactúan con la base de datos, con la misma estructura pero con algunos métodos diferentes. Y quiero usar un código que trate a todas por igual.

La clase sería tal que así:

Código PHP:
class clsTableA{
       private 
$create_date;
    
       public function 
getCreateDate(){
         return 
$this->create_date;
       }

       public function 
setCreateDate($create_date){
         
$this->create_date $create_date;
       }
       .
       .
       .
       .


Y yo estoy usando el objeto Reflection:

Código PHP:
$className "cls".getFormattedName($tabla);
$myClass = new ReflectionClass($className);

$createDate $myClass->getMethod("setCreateDate");
$createDate->invoke($myClass,"28/08/2012"); 
Y esto no me funciona, no se que estoy haciendo mal, o si estoy escogiendo el camino incorrecto. ¿Alguien me podría ayudar?

Muchas gracias y saludos
  #2 (permalink)  
Antiguo 29/08/2012, 06:19
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Tratamiento de clases dinámicamente

tienes que "extender" la clase, es decir la nueva clase heredará los métodos y procedimientos de tu clase base, para tu caso sería:
Código PHP:
class clsTableA{
....
 }

class 
ReflectionClass extends clsTableA{
...
}

$myClass = new ReflectionClass
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 29/08/2012, 06:24
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: Tratamiento de clases dinámicamente

Que error te muestra ?, has comprobado el nombre de la clase y este es correcto ?

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 29/08/2012, 08:03
 
Fecha de Ingreso: noviembre-2007
Ubicación: Madrid
Mensajes: 96
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Tratamiento de clases dinámicamente

Gracias jcxnet y masterpuppet por contestar:

Pues esa es otra cosa, no veo ningún error, simplemente se me queda el navegador en blanco. No se como puedo ver los errores o como debuguear en php. Lo siento, no estoy especializado en php como podéis ver.

En realidad lo que quiero hacer es que, tengo diferentes formularios que el action llaman al mismo fichero .php, y al que le paso además de los campos del formulario, el nombre de la tabla con el que se creó tal formulario. Cada campo del formulario tiene el mismo nombre que el campo de la tabla. Tengo clases creadas de persistencia por cada tabla y luego tengo en otra tabla especial, los campos que son diferentes en cada una, o mejor dicho, los campos que aparecen en el formulario. Así he llegado a crear dinámicamente, según la base de datos, las clases de persistencias y los formularios.

Entonces, según el nombre de la tabla puedo instanciar la clase, Ésta se instancia bien, porque he utilizado esto para ver sus métodos:

Código PHP:
$métodos $myClass->getMethods();
var_dump($métodos); 
y me aparecen los métodos correctos.
Después leo en la otra tabla especial y obtengo los campos del formulario. Y como los métodos get-set se crearon mediante el nombre del campo, puedo obtener los nombres de los métodos utilizando el mismo sistema.

Ahora tengo, la clase instanciada por un lado, y en un String el nombre del método. Ya solo me falta invocarlos. Porque entre esos métodos, está el insert, update y delete para la base de datos.

Por eso no se si me estoy encaminando hacia otro lado o van por ahí los tiros. Sin embargo, no consigo hacer que me funcione.

Gracias de nuevo por su ayuda.
  #5 (permalink)  
Antiguo 29/08/2012, 09:27
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: Tratamiento de clases dinámicamente

Entonces para que utilizas Reflection ?, si instancia correctamente la clase porque no invocas el método directamente ? y para ver los errores basta con que agregues al inicio del script.

Código PHP:
Ver original
  1. ini_set('display_errors', true);

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: clases, tabla, tratamiento
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 22:02.