Ver Mensaje Individual
  #9 (permalink)  
Antiguo 02/11/2012, 18:57
FilanderGarcia
 
Fecha de Ingreso: noviembre-2012
Ubicación: Fusagasugá, Colombia
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Hacer Accesible variables de un archivo incluido para todos los métodos de

Hola masterpuppet un gusto saludarle, gracias por responder, no se si lo he echo mal, pero aun persiste el mismo error.

El error y los warning que se producen:

Código:
Warning: include_once(../library/config.php): failed to open stream: No such file or directory in /var/www/test/config/config.php on line 3

Warning: include_once(): Failed opening '../library/config.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/test/config/config.php on line 3

Warning: include(../config/config.php): failed to open stream: No such file or directory in /var/www/test/library/View.php on line 8

Warning: include(): Failed opening '../config/config.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/test/library/View.php on line 8

Fatal error: Call to a member function get() on a non-object in /var/www/test/library/View.php on line 15
Lo que hice fue esto:


Archivo config.php -> config/config.php:

Código PHP:
Ver original
  1. <?php
  2.  
  3.         // También use la ruta absoluta y tampoco funciono.
  4.     include_once('../library/config.php');
  5.  
  6.  
  7.     $config = null;
  8.     $config = new config();
  9.  
  10.     $RouteAbsolute = null;
  11.     $RouteAbsolute = 'http://' . $_SERVER['HTTP_HOST'] . '/test/public/';
  12.  
  13.     $config->set('layoutPath', 'layouts/');
  14.     $config->set('viewsPath', 'public/html/');
  15.     $config->set('staticRoute', $RouteAbsolute);
  16.  
  17.     $config->set('controllersFolder', 'controllers/');
  18.     $config->set('modelsFolder', 'models/');
  19.     $config->set('viewsFolder', 'views/');
  20.  
  21.     $config->set('dbhost', 'myserver');
  22.     $config->set('dbname', 'mydb');
  23.     $config->set('dbuser', 'myuser');
  24.     $config->set('dbpass', 'mypass');
  25.  
  26.     return $config;
  27. ?>

Clase view.php -> library/view.php:

Nota: solo coloco un método para que quede mas corto el código de la clase view.

Código PHP:
Ver original
  1. <?php
  2.  
  3. class View
  4. {
  5.      private $config;
  6.      public function __construct()
  7.     {
  8.          $this->config = include '../config/config.php';
  9.     }
  10.  
  11.     // Mostrar la Vista
  12.     public function show($name, $vars = array())
  13.     {
  14.         $config = $this->config;
  15.         $path = $config->get('viewsFolder') . $name;
  16.  
  17.         if (file_exists($path) == false)
  18.         {
  19.             echo ("la vista " . $path . " no existe.");
  20.             return false;
  21.         }
  22.        
  23.         if(is_array($vars))
  24.         {
  25.             foreach ($vars as $key => $value) {
  26.                 $$key = $value;
  27.             }
  28.         }
  29.                
  30.         include($path);
  31.     }
  32.  
  33. }
  34.  
  35. ?>

La verdad es que antes estaba usando singleton para el trabajo de lectura del archivo de configuración y la instancia de la clase a la base de datos, pero leí en el foro que esto no era recomendado, así que lo que hice fue borrarle el singleton y tratar de hacerlo normal, en el mismo tema leí acerca de Registry pero la verdad nunca lo he usado, esta es la primera vez que trato de hacer un proyecto relativamente grande, usan POO y MVC.

Saludos.

Última edición por FilanderGarcia; 02/11/2012 a las 19:04