Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP]Ladowanie config
Forum PHP.pl > Forum > PHP > Object-oriented programming
marcio
WItam pisze sobie mala aplikacje za pomoca MVC i powiedzmy ze chce zrobic kilka klas i udogodnien + architekture katalogow ktora juz mam co mi sie przyda do nastepnych "projektow".

Mam taka strukture katalogow:

Kod
Folders:

|www|
  |frontcontroller|
  |components|
      |controllers|
      |views|
      |models|
  |plugins| 
      |controllers|
      |views|
      |models|
  |libraries|
  |controllers|
  |views|
  |models|
  |config|


Mam plik config/config.php:

  1.  
  2. <?php
  3.  
  4. $configs['controller'] = 'Home'; //Default controller
  5.  
  6. $configs['action'] = 'Index'; //Defualt action
  7.  
  8. $configs['render'] = True; //Render = true bez echo
  9.  
  10. /*
  11. ********************
  12. |Dane do bazy danych *
  13. ********************
  14. */
  15.  
  16. $configs['host'] = ''; 
  17. $configs['login'] = '';
  18. $configs['pwd'] = '';
  19. $configs['db'] = '';
  20.  
  21. ?>
  22.  
  23.  
  24.  


Do tego klase loader w libraries/Lader.php:

  1.  
  2. <?php
  3.  
  4. class Loader {
  5.  
  6.   private static $libraries = array();
  7.   
  8.   
  9.   public static function load($lib) {
  10.   
  11.   
  12.   $ValidLibs = array(
  13.    
  14.   'Router',
  15.   'View',
  16.   'Cfg',
  17.   'Db'
  18.    
  19.   );
  20.   
  21.   
  22.   if(in_array($lib, $ValidLibs) && file_exists('libraries/'.$lib.'.php')) {
  23.    
  24.   require_once('libraries/'.$lib.'.php');
  25.    
  26.   if(empty(self::$libraries[$lib])) {
  27.  
  28.   self::$libraries[$lib] = new $lib();
  29.  
  30.  }
  31.  
  32.  return self::$libraries[$lib];
  33.    
  34.   }
  35.   
  36.   }  
  37.  
  38. }
  39.  
  40. ?>
  41.  
  42.  
  43.  


I do tego plik ktory powinien wczytywac config libraries/Cfg.php:

  1.  
  2. <?php
  3. require_once('config/config.php');
  4.  
  5. class Cfg {
  6.  
  7.  public $config;
  8.  
  9.  public function __contruct() {
  10.  
  11.  global $configs;
  12.  
  13.  $this -> config = $configs;
  14.  
  15.  }
  16.  
  17.  public function __get($cfg) {
  18.  
  19.   return $this -> config[$cfg];
  20.  
  21.  }
  22.  
  23. }
  24.  
  25. ?>
  26.  
  27.  
  28.  


Sek w tym ze config mi sie nie laduje gdy zrobie np:

  1.  
  2. $cfg = Loader::load('Cfg');
  3.  
  4. $controller = $cfg -> controller;
  5.  


I dam sobie na te zmienne print_r() to owszem obiekt sie tworzy ale nie laduja mi sie zmienne z tablicy $configs z pliku config/config.php.



Problem jest trywialny ale nie wiem czemu tak sie dzieje tongue.gif licze na pomoc.

jang
  1. require_once('config/config.php'); <- questionmark.gif?
  2.  
  3. class Cfg {
  4.  
  5. public $config;
  6.  
  7. public function __contruct() {
  8.  
  9. global $configs; <- a ta ohyda :) co tu robi ?
  10.  
  11. require_once('config/config.php');
  12. $this -> config = $configs;
  13.  
  14. }
marcio
  1.  
  2. $cfg = Loader::load('Cfg');
  3. print_r($cfg -> config);
  4.  
  5.  
  6.  


Tez zwraca pusty obiekt

destroyerr
Nie działa pewnie dlatego, że nie masz konstruktora tongue.gif Drobna literówka.

Jak już tak upiększacie to ja proponuję tak:
  1. <?php
  2. $configs['controller'] = 'Home'; //Default controller
  3.  
  4. $configs['action'] = 'Index'; //Defualt action
  5.  
  6. $configs['render'] = True; //Render = true bez echo
  7.  
  8. /*
  9. ********************
  10. |Dane do bazy danych *
  11. ********************
  12. */
  13.  
  14. $configs['host'] = '';
  15. $configs['login'] = '';
  16. $configs['pwd'] = '';
  17. $configs['db'] = '';
  18.  
  19. return $configs;

  1. <?php
  2. class Cfg
  3. {
  4. public $config;
  5.  
  6. public function __construct()
  7. {
  8. $this -> config = require_once('config/config.php');
  9. }
  10.  
  11. public function __get($cfg)
  12. {
  13. return $this -> config[$cfg];
  14. }
  15. }

marcio
Haha @destroyerr kocham cie smile.gif faktycznie mialem blad brakowalo s przy nazwe konstruktora sorki ale kod pisalem o 2.00 w nocy wiec zdarza sie a bylem pewny ze blad byl gdzies indziej a php nie zwrocilo zadnego error'u.

I moj i twoj kod dzialaja dzieki ci i sorki za taka glupote tongue.gif

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.