Author: glen Date: Tue Jan 13 12:48:39 2009 GMT Module: SOURCES Tag: HEAD ---- Log message: - global autoload class: require 'autoload.php' to init
---- Files affected: SOURCES: autoload.php (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: SOURCES/autoload.php diff -u /dev/null SOURCES/autoload.php:1.1 --- /dev/null Tue Jan 13 13:48:39 2009 +++ SOURCES/autoload.php Tue Jan 13 13:48:33 2009 @@ -0,0 +1,75 @@ +<?php +/** + * Global Autoload class. + * + * @author Tarmo Lehtpuu <[email protected]> + * @author Tanel Suurhans <[email protected]> + * @author Elan Ruusamäe <[email protected]> + * + * @package autoload + */ +class PHP_Autoload { + + private static $excludes = array('.', '..', '.svn', 'CVS'); + private static $classes; + + public static function autoload($className) { + if (class_exists($className, false) || interface_exists($className, false)) { + return; + } + + if (!is_array(self::$classes)) { + self::$classes = array(); + + // scan framework dir + foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) { + self::scan($path); + } + } + + // Zend framework + if (strpos($className, 'Zend') === 0){ + require_once str_replace('_', '/', $className) . '.php'; + + // Smarty + } else if ($className === 'Smarty') { + require_once 'Smarty/Smarty.class.php'; + + // sql_pool + } else if ($className === 'sql_pool') { + require_once 'class.sql_pool.php'; + + } else { + // the rest + if (array_key_exists($className, self::$classes)) { + require_once self::$classes[$className]; + } + } + } + + private static function scan($path) { + $dh = opendir($path); + while (($file = readdir($dh)) !== false) { + if (array_search($file, self::$excludes) === false) { + if (is_dir($path . DIRECTORY_SEPARATOR . $file)) { + self::scan($path . DIRECTORY_SEPARATOR . $file); + continue; + } + $tokens = explode('.', $file); + if (count($tokens) != 2) { + continue; + } + + $ext = $tokens[1]; + $class = $tokens[0]; + + if ($ext == 'php') { + self::$classes[$class] = $path . DIRECTORY_SEPARATOR . $file; + } + } + } + closedir($dh); + } +} + +spl_autoload_register(array('PHP_Autoload', 'autoload')); ================================================================ _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
