Foros del Web » Programando para Internet » PHP » Zend »

ZF1, como extender una clase desde una variable

Estas en el tema de ZF1, como extender una clase desde una variable en el foro de Zend en Foros del Web. Hola!! Estuve buscando pero no encontre como poder pasar una variable para que una clase extienda a otra de manera dinamica, es decir, sin indicar ...
  #1 (permalink)  
Antiguo 21/03/2014, 11:08
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
ZF1, como extender una clase desde una variable

Hola!!
Estuve buscando pero no encontre como poder pasar una variable para que una clase extienda a otra de manera dinamica, es decir, sin indicar explicitamente a que clase extiende.

tengo el siguiente planteo:
Voy a crear un controller que es una instancia de Zend_Controller_Action, el tema es que la clase extenderá a otra si es que se da una condición ( que exista un archivo )


ControllerMio extends ControllerPuente
....

ControllerPuente.php

if( file_exists(...) ){
return new ControllerConCodigoExtra()
}else{
return new ControllerSinCodigoExtra()
}


esas 2 ultimas clases, extienden si, de Zend_Controller_Action.

¿cómo se hace eso?
  #2 (permalink)  
Antiguo 21/03/2014, 14:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: ZF1, como extender una clase desde una variable

Creo que encontré una solución al menos al problema que yo planteaba (aunque no de poder incluir en el extends una variable).

al definir la clase puente, incluyo ahí la condición, y segun corresponda declaro la clase como que extiende a una u otra clase:

$file = realpath(APPLICATION_PATH ).'\ControllerConCodigoExtra.php';
if( file_exists( $file ) ){
require_once 'ControllerConCodigoExtra.php';
class ControllerPuente extends ControllerConCodigoExtra
{

}
}else{
require_once 'ControllerSinCodigoExtra.php';
class ControllerPuente extends ControllerSinCodigoExtra
{

}
}


aca la fuente: http://stackoverflow.com/questions/7...ds-as-variable

Etiquetas: clase, extender, variable
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 08:09.