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

Reply via email to