Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ładowanie singleton w __autoload(), jak to zrobić? czy jest możliwe?
tomek_swat
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 3.04.2008

Ostrzeżenie: (0%)
-----


witam,
najpierw przedstawię sytuację kiedy wszystko mi działa
w katalogu /classes mam plik Config.php
  1. <?php
  2.    
  3.        class Config {
  4.        
  5.        private $data = array();
  6.        private static $instance;
  7.        
  8.        private function __construct() {}
  9.        
  10.        public static function getInstance(){
  11.            if(empty(self::$instance)){
  12.                self::$instance = new Config();
  13.            }
  14.            return self::$instance;
  15.        }
  16.        /*
  17.         public function setProperty($name, $val){
  18.             $this->data[$name] = $val;            
  19.         }
  20.         */
  21.        public function getProperty($name){
  22.            
  23.            $this->data = parse_ini_file('settings.php',true);
  24.            
  25.            if(!isset($this->data[$name])){
  26.                throw new Exception('Nie istniejąca dyrektywa: '.$name);
  27.            }
  28.            
  29.            return $this->data[$name];
  30.            
  31.        }
  32.        
  33.    }
  34.    
  35. ?>


kiedy ją dołączam do pliku znajdującego się w tym samym folderze index.php
  1. <?php
  2. require_once('Config.php');
  3.  
  4. $dane = Config::getInstance();
  5.        
  6.    echo $dane = Config::getInstance()->getProperty("login");
  7.    
  8. ?>

działa mi prawidłowo, ale jeśli chce to wywołać w innym pliku z innego folderu
  1. <?php
  2.    
  3.    define('DIR_MAIN', '../');
  4.    require(DIR_MAIN.'common.php');
  5.    
  6.    try {
  7.        
  8.    echo $dane = Config::getInstance()->getProperty("login");
  9.    
  10. } catch (MyException $error){
  11.    echo $error;
  12. }
  13.  
  14. ?>

to już niestety nic nie wypisuję? plik common.php dołącza plik /libs/classes.php
  1. <?php
  2.    
  3.    define('DIR_LIBS', '../libs/');
  4.    define('DIR_CLASS', 'classes/');
  5.    
  6.    function __autoload($className){
  7.        
  8.        $path = DIR_CLASS."$className.php";
  9.        
  10.        if(file_exists(DIR_LIBS.$path)){
  11.            
  12.        $ok = true;
  13.        require_once("$path");    
  14.        
  15.        }
  16.        
  17.        if($ok == false){
  18.            eval("class $className{};");
  19.            throw new MyException("Klasa: $className nie istnieje w ".DIR_LIBS.DIR_CLASS);
  20.        }
  21.    
  22.            
  23.    }
  24.    
  25. ?>

czy to pojawia się ze względu jakiegoś błędu odnośnie ładowania klasy, która jest singletonem poprzez funkcję __autoload()?
pzdr
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 04:25