lo que es pasa es sencillo, pero por mas que he intentado no lo he podido solucionar, quizás es un error de conceptos de mi parte. lo quiero hacer es poder hacer un require(); de mi archivo de Configuración en mi clase view, pero solo incluyéndolo una vez y no como estoy haciendo actualmente y es que por cada método tengo incluyo el archivo, espero haberme echo entender.
Creo que la mejor forma de explicarme es colocar el código:
Directorios:
test
----->config
------------>config.php
----->library
--------->config.php
--------->view.php
Archivo config.php
Código:
<?php $config = null; $config = new config(); $RouteAbsolute = null; $RouteAbsolute = 'http://' . $_SERVER['HTTP_HOST'] . '/test/public/'; $config->set('layoutPath', 'layouts/'); $config->set('viewsPath', 'public/html/'); $config->set('staticRoute', $RouteAbsolute); $config->set('controllersFolder', 'controllers/'); $config->set('modelsFolder', 'models/'); $config->set('viewsFolder', 'views/'); $config->set('dbhost', 'myserver'); $config->set('dbname', 'mydb'); $config->set('dbuser', 'myuser'); $config->set('dbpass', 'mypass'); ?>
Clase Config.php (esta en library):
Código:
<?php class Config { private $vars; function __construct() { $this->vars = array(); } //Con set vamos guardando nuestras variables. public function set($name, $value) { if(!isset($this->vars[$name])) { $this->vars[$name] = $value; } } //Con get('nombre_de_la_variable') recuperamos un valor. public function get($name) { if(isset($this->vars[$name])) { return $this->vars[$name]; } } } ?>
Clase view.php (esta en library):
Código:
<?php class View { public function show($name, $vars = array()) { //$name es el nombre de nuestra plantilla, por ej, listado.php //$vars es el contenedor de nuestras variables, es un arreglo del tipo llave => valor, opcional. // Para que me funcione tengo que poner el require en cada método como en este caso. require 'config/config.php'; //Armamos la ruta a la plantilla $path = $config->get('viewsFolder') . $name; //Si no existe el fichero en cuestion, tiramos un 404 if (file_exists($path) == false) { echo ("la vista " . $path . " no existe."); return false; } //Si hay variables para asignar, las pasamos una a una. if(is_array($vars)) { foreach ($vars as $key => $value) { $$key = $value; } } //Finalmente, incluimos la plantilla. include($path); } // Obtiene la templete o layout public function getLayout($layout) { require 'config/config.php'; $file = $config->get('layoutPath') . $layout . '.html'; $selectLayout = file_get_contents($file); return $selectLayout; } // Obtiene la vista public function getView($view) { require 'config/config.php'; $file = $config->get('viewsPath') . $view . '.html'; $selectView = file_get_contents($file); return $selectView; } // renderiza y retorna los datos dinamicos public function renderDinamicData($html, $data) { foreach ($data as $clave=>$valor) { $html = str_replace('{'.$clave.'}', $valor, $html); } return $html; } public function staticsRoute() { require 'config/config.php'; $route = $config->get('staticRoute'); return $route; } } ?>