Ejemplo n.º 1
0
 /**
  * 自动加载类对应的文件
  *
  * @param string $package_name 类名
  *
  * @return void
  */
 public static function autoload($package_name)
 {
     $u_name = APP_NAME . 'al:' . $package_name;
     if (KISS::enableCache() && apc_exists($u_name)) {
         $filename = apc_fetch($u_name);
         include_once $filename;
         self::$_load_array[$package_name] = $filename;
         self::$_new_class_found = true;
         return;
     }
     $package_array = preg_split('/_/', $package_name);
     $file_array[] = join('/', $package_array);
     $file_array[] = strtolower($file_array[0]);
     array_push($package_array, 'class.' . array_pop($package_array));
     $file_array[] = join('/', $package_array);
     $file_array[] = strtolower($file_array[2]);
     $path_array = explode(PATH_SEPARATOR, ini_get('include_path'));
     foreach ($path_array as $path) {
         foreach ($file_array as $file) {
             $filename = "{$path}/{$file}.php";
             if (file_exists($filename)) {
                 include_once $filename;
                 if (KISS::enableCache()) {
                     apc_store($u_name, $filename);
                 }
                 self::$_load_array[$package_name] = $filename;
                 self::$_new_class_found = true;
                 return;
             }
         }
     }
 }