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

Clase (abstracta??) en CI para generalizar algunos métodos

Estas en el tema de Clase (abstracta??) en CI para generalizar algunos métodos en el foro de CodeIgniter en Foros del Web. Hola foreros, anteriormente ya realicé un pequeno sitio con CodeIgniter y una vez finalizado me dí cuenta de algunas cosas que podría mejorar para el ...
  #1 (permalink)  
Antiguo 22/06/2011, 22:12
Avatar de Danielfuzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 111
Antigüedad: 16 años, 6 meses
Puntos: 18
Clase (abstracta??) en CI para generalizar algunos métodos

Hola foreros, anteriormente ya realicé un pequeno sitio con CodeIgniter y una vez finalizado me dí cuenta de algunas cosas que podría mejorar para el siguiente

Ahora estoy empezando con un nuevo sitio y una de las cosas que tengo en mente para mejorar es crear una super clase controlador (que herede de CI_Controller) que tenga métodos que suelo utilizar en mis demás controladores, como por ejemplo el método cargarPagina que lo que hará sera cargar una vista que contenga un HTML al que siempre le suelo enviar parametros como $title (título de la pagina para la etiqueta <title>), o $descripción (descripcion de la página para <meta> de descripcion), datos (array que contiene la info a mostrar en la vista), etc.

Para ello implemente esta super clase controlador como abstracta, y la situé en la carpeta controllers y he aquí mi duda:

-> En qué directorio debo situar esta superclase de modo que en mis controladores no tenga que hacer un include('superclase.php') y simplemente ponga el extends Superclase en la definicion de mi clase??

Gracias.
  #2 (permalink)  
Antiguo 23/06/2011, 01:46
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

Un poco lio..

En CI puedes poner en config/autoload.php apartado libraries, lo que quieras cargar.

De todas formas no se haría con un include.. si no con $this->load->library('tu-libreria');

Tampoco veo clara la utilidad de tu clase.

Un saludo!
  #3 (permalink)  
Antiguo 23/06/2011, 18:13
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

Estas organizando de manera incorrecta tu proyecto. Si es lo que imagino.

Podés dividir tu vista en header body footer.
Cuando llames a tu vista header le pasás los parámetros necesarios. Title, meta's...
Las vistas no necesariamente tienen que ser llamadas desde el controlller, una vista tambien puede llamar a otra(Tomalo como includes) asi los parámetros que le pasas desde el controller, los podes usar en cualquier vista.

No se si se entendio. :P

Ahora si es estrictamente necesario incluir una librería, hacelo como te dijo miktrv

saludos.
__________________
Drupal Argentina
  #4 (permalink)  
Antiguo 23/06/2011, 19:34
 
Fecha de Ingreso: marzo-2011
Mensajes: 68
Antigüedad: 13 años, 1 mes
Puntos: 9
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

Tampoco vendría bien llamarla como librería porque la llamarías desde adentro de un controlador (que justamente es lo que queres que sea hijo de la clase que llamás).

Si entiendo bien lo que querés hacer, creo que la mejor forma es llamar a la clase My_Controller con un hook.

Saludos!
  #5 (permalink)  
Antiguo 25/06/2011, 18:56
Avatar de Danielfuzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 111
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

En resumen lo que deseo hacer es saber donde tengo que ubicar una clase que creé para poder extenderla desde mi controladores ubicados en la carpeta controller.

Esta clase que creé es una subclase(clase heredada) de la CI_Controller de CodeIgniter, mi pregunta es: donde ubico el archivo de esta mi clase para poder extenderla a mis controladores?? osea para poder hacer un controlador:

Código:
class MiControlador exrtends MiClase

en lugar de

Código:
class MiControlador extends CI_Controller
Gracias.
  #6 (permalink)  
Antiguo 25/06/2011, 19:52
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

revisa la documentación de codeigniter. Puedes extender las clases de CI para que el mismo las detecte, en tu archivo de configuración defines el prefijo, por defecto es MY

MY_Controller



Un saludo!
  #7 (permalink)  
Antiguo 25/06/2011, 21:14
Avatar de Danielfuzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 111
Antigüedad: 16 años, 6 meses
Puntos: 18
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

gracias miktrv, ya lo conseguí.

Comento que al principio no me funcionaba por no leer bien e imaginarme que en lugar de application/core decía system/core, jajaja, pero ya está.

Muchas Gracias!!!
  #8 (permalink)  
Antiguo 26/06/2011, 04:39
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Clase (abstracta??) en CI para generalizar algunos métodos

De nada, me alegro de que te funcione!

Un saludo0o!

Etiquetas: ci_controller, clase, extender, frameworks-y-php-orientado-a-objetos
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 04:04.