Foros del Web » Programando para Internet » PHP »

PHP OO alcanse objetos

Estas en el tema de alcanse objetos en el foro de PHP en Foros del Web. Hola, estoy intentando mejorar mi framework, actualmente tengo en mi clase vista lo siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original public function show ( $name ...
  #1 (permalink)  
Antiguo 11/10/2010, 12:01
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 5 meses
Puntos: 43
alcanse objetos

Hola,
estoy intentando mejorar mi framework, actualmente tengo en mi clase vista lo siguiente:
Código PHP:
Ver original
  1. public function show($name, $vars = array()) {
  2.         //$name es el nombre de nuestra plantilla, por ej, listado.php
  3.         //$vars es el contenedor de nuestras variables, es un arreglo del tipo llave => valor, opcional.
  4.  
  5.         //Traemos una instancia de nuestra clase de configuracion.
  6.         $config = Config::singleton();
  7.         $utilidades = Utilidades::singleton();
  8.         $debug = FirePHP::getInstance(true);
  9.         $lenguaje = Language::singleton();
  10.         $url = Url::singleton();
  11.  
  12.         //Armamos la ruta a la plantilla
  13.         $path = $config->get('vista') . $name;
  14.  
  15.         //asigno algunos objetos para que puedas ser usados en el frontend
  16.         $vars['utilidades'] = $utilidades;
  17.         $vars['config'] = $config;
  18.         $vars['debug'] = $debug;
  19.         $vars['leng'] = $lenguaje;
  20.  
  21.         //Si no existe el fichero en cuestion, tiramos un 404
  22.         if (file_exists($path) == false) {
  23.  
  24.         error_log("[".date("F j, Y, G:i")."] [E_USER_NOTICE] [tipo Vista] El Template: {$path}  no existe - \n", 3,$config->get('root').'/errores.log');
  25.         header("Location:index.php?controlador=error404");
  26.         }
  27.  
  28.         //Si hay variables para asignar, las pasamos una a una.
  29.         if(is_array($vars)) {
  30.         foreach ($vars as $key => $value) {
  31.             $$key = $value;
  32.         }
  33.         }
Todo anda de maravilla, lo que me gustaría que me digan es como puedo evitar hacer esto:
Código PHP:
Ver original
  1. //Traemos una instancia de nuestra clase de configuracion.
  2.         $config = Config::singleton();
  3.         $utilidades = Utilidades::singleton();
  4.         $debug = FirePHP::getInstance(true);
  5.         $lenguaje = Language::singleton();
  6.         $url = Url::singleton();
  7.  
  8.         //Armamos la ruta a la plantilla
  9.         $path = $config->get('vista') . $name;
  10.  
  11.         //asigno algunos objetos para que puedas ser usados en el frontend
  12.         $vars['utilidades'] = $utilidades;
  13.         $vars['config'] = $config;
  14.         $vars['debug'] = $debug;
  15.         $vars['leng'] = $lenguaje;

para usar esos objetos en las vistas, porque cada vez que cree una clase para x funcionalidad tengo que cambiar la clase de la vista agregándola en esa porción de código, mi duda es donde debería instanciar estos objetos para que sean visible desde cualquier vista, en el frontcontroller o en mi clase abstracta controler (de la cual heredan mis controladores)

desde ya muchas gracias
  #2 (permalink)  
Antiguo 12/10/2010, 13:01
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: alcanse objetos

En tu clase froncontroller.

Aquí te dejo este link sobre el Patron FrontController

Te recomiendo que no utilices el Patrón Singleton en tu clase config. Ya que con esto estas restringiendo al uso de una sola base de datos en el entorno de ejecución.

Saludos.
  #3 (permalink)  
Antiguo 12/10/2010, 13:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: alcanse objetos

Más alla de tener que cargar todo eso en tu vista, ve por ejemplo Zend, usa el concepto de View Helpers desde donde tu plantilla puedes cargar objetos que necesites y procesar la información.

Saludos.

Etiquetas: 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:54.