예제 #1
0
 /**
  * Load a class definition
  *
  * @param string $className The className to load
  * @return true If success
  * @throws nExecption If the file isn't find
  */
 public static function load($className)
 {
     if (!class_exists($className) && !in_array($className, self::$loadedClass)) {
         if (!array_key_exists($className, self::$loadFiles)) {
             if ($file = file::nyroExists(array('name' => $className))) {
                 require $file;
                 self::$loadFiles[$className] = array($file);
                 self::$saveCacheLoad = true;
                 self::$loadedClass[] = $className;
                 if (defined('RUNKIT_VERSION')) {
                     $filesExtend = file::nyroExists(array('name' => $className, 'type' => 'extend', 'rtl' => false, 'list' => true));
                     if (!empty($filesExtend)) {
                         self::$loadFiles[$className][1] = $filesExtend;
                         foreach ($filesExtend as $fe) {
                             runkit_import($fe);
                         }
                     }
                 }
             } else {
                 if (!lib::load($className)) {
                     if (self::$throwOnLoad) {
                         throw new nException('Factory - load: Unable to find the file for ' . $className . '.');
                     } else {
                         return false;
                     }
                 }
             }
         } else {
             require self::$loadFiles[$className][0];
             self::$loadedClass[] = $className;
             if (defined('RUNKIT_VERSION') && array_key_exists(1, self::$loadFiles[$className])) {
                 foreach (self::$loadFiles[$className][1] as $fe) {
                     runkit_import($fe);
                 }
             }
         }
     }
     return true;
 }