Changeset 78

Show
Ignore:
Timestamp:
01/19/07 01:03:15 (2 years ago)
Author:
mikey
Message:

made XJConf ready for star

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk

    • Property svn:ignore changed from
      simpletest
      to
      simpletest
      build
      star
  • trunk/XJConf/XJConfLoader.php

    r9 r78  
    2121     * @var  array<String> 
    2222     */ 
    23     private static $loadedFiles = array(); 
     23    private static $loadedClasses = array(); 
    2424     
    2525    /** 
     
    3838    public static function load() 
    3939    { 
    40         $files = func_get_args(); 
    41         if (count($files) == 0) { 
     40        $classes = func_get_args(); 
     41        if (count($classes) == 0) { 
    4242                // its ok to call this without any arguments, this won't cause any harm 
    4343            return; 
     
    4545         
    4646        $realFiles = array(); 
    47         foreach ($files as $file) { 
    48             array_push($realFiles, self::mapClassname($file)); 
     47        foreach ($classes as $className) { 
     48            if (in_array($className, self::$loadedClasses) == TRUE) { 
     49                continue; // step to next file if file is already loaded 
     50            } 
     51 
     52            array_push(self::$loadedClasses, $className); 
     53            if (class_exists('StarClassRegistry') == false) { 
     54                require dirname(__FILE__) . '/' . self::mapClassname($className); 
     55            } else { 
     56                if (substr($className, 0, 11) != 'net.xjconf.') { 
     57                    $uri = StarClassRegistry::getUriForClass('net.xjconf.' . $className); 
     58                } else { 
     59                    $uri = StarClassRegistry::getUriForClass($className); 
     60                } 
     61                 
     62                require $uri; 
     63            } 
     64        } 
     65    } 
     66     
     67    /** 
     68     * checks whether a file with the given class exists 
     69     * 
     70     * @param   string  $fqClassName 
     71     * @return  bool 
     72     */ 
     73    public static function classFileExists($fqClassName) 
     74    { 
     75        if (class_exists('StarClassRegistry') == false) { 
     76            return file_exists(dirname(__FILE__) . '/' . self::mapClassname($fqClassName)); 
    4977        } 
    5078         
    51         foreach ($realFiles as $filename) { 
    52             if (in_array($filename, self::$loadedFiles) == TRUE) { 
    53                 continue; // step to next file if file is already loaded 
    54             } 
    55              
    56             // save filename before include to prevent endless loop 
    57             array_push(self::$loadedFiles, $filename); 
    58             require(dirname(__FILE__) . '/' . $filename); 
     79        if (substr($fqClassName, 0, 11) != 'net.xjconf.') { 
     80            $fqClassName = 'net.xjconf.' . $fqClassName; 
    5981        } 
     82        return (StarClassRegistry::getFileForClass($fqClassName) != null); 
    6083    } 
    6184     
  • trunk/XJConf/definitions/handler/DefinitionHandlerFactory.php

    r11 r78  
    2626    { 
    2727        $className = ucfirst($type) . 'DefinitionHandler'; 
    28         if (file_exists(dirname(__FILE__) . '/' . $className . '.php') == false) { 
     28        if (XJConfLoader::classFileExists('definitions.handler.' . $className) == false) { 
    2929            $className = 'EmptyDefinitionHandler'; 
    3030        }