Own implementations of magic functions always on top
[core.git] / inc / loader / class_ClassLoader.php
index 34fd3c3cfd1e64fce72775dbe1ab7db95055843e..18b9244c65111d93ee66cff96003bcc7f8b0fc26 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2011 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -38,7 +38,7 @@ class ClassLoader {
        /**
         * Instance of this class
         */
-       private static $selfInstance = null;
+       private static $selfInstance = NULL;
 
        /**
         * Array with all classes
@@ -53,12 +53,12 @@ class ClassLoader {
        /**
         * Suffix with extension for all class files
         */
-       private $prefix = "class_";
+       private $prefix = 'class_';
 
        /**
         * Suffix with extension for all class files
         */
-       private $suffix = ".php";
+       private $suffix = '.php';
 
        /**
         * A list for directory names (no leading/trailing slashes!) which not be scanned by the path scanner
@@ -106,13 +106,45 @@ class ClassLoader {
                // Is Currently empty
        }
 
+       /**
+        * The destructor makes it sure all caches got flushed
+        *
+        * @return      void
+        */
+       public function __destruct () {
+               // Skip here if dev-mode
+               if (defined('DEVELOPER')) {
+                       return;
+               } // END - if
+
+               // Skip here if already cached
+               if ($this->listCached === false) {
+                       // Writes the cache file of our list away
+                       $cacheContent = serialize($this->classes);
+                       file_put_contents($this->listCacheFQFN, $cacheContent);
+               } // END - if
+
+               // Skip here if already cached
+               if ($this->classesCached === false) {
+                       // Generate a full-cache of all classes
+                       $cacheContent = '';
+                       foreach ($this->loadedClasses as $fqfn) {
+                               // Load the file
+                               $cacheContent .= file_get_contents($fqfn);
+                       } // END - foreach
+
+                       // And write it away
+                       file_put_contents($this->classCacheFQFN, $cacheContent);
+               } // END - if
+       }
+
        /**
         * Our renamed factory method
         *
         * @param       $configInstance Configuration class instance
         * @return      void
         */
-       public final static function createClassLoader (FrameworkConfiguration $configInstance) {
+       public static final function createClassLoader (FrameworkConfiguration $configInstance) {
                // Get a new instance
                $loaderInstance = new ClassLoader();
 
@@ -135,8 +167,8 @@ class ClassLoader {
 
                // Construct the FQFN for the cache
                if (!defined('DEVELOPER')) {
-                       $this->listCacheFQFN  = $this->configInstance->getConfigEntry('local_db_path') . "list-" . $this->configInstance->getConfigEntry('app_name') . ".cache";
-                       $this->classCacheFQFN = $this->configInstance->getConfigEntry('local_db_path') . "class-" . $this->configInstance->getConfigEntry('app_name') . ".cache";
+                       $this->listCacheFQFN  = $this->configInstance->getConfigEntry('local_db_path') . 'list-' . $this->configInstance->getConfigEntry('app_name') . '.cache';
+                       $this->classCacheFQFN = $this->configInstance->getConfigEntry('local_db_path') . 'class-' . $this->configInstance->getConfigEntry('app_name') . '.cache';
                } // END - if
 
                // Set suffix and prefix from configuration
@@ -187,7 +219,7 @@ class ClassLoader {
         *
         * @return      $selfInstance           An instance of this class
         */
-       public final static function getInstance () {
+       public static final function getInstance () {
                // Is the instance there?
                if (is_null(self::$selfInstance)) {
                        // Get a new one
@@ -198,36 +230,6 @@ class ClassLoader {
                return self::$selfInstance;
        }
 
-       /**
-        * The destructor makes it sure all caches got flushed
-        *
-        * @return      void
-        */
-       public function __destruct () {
-               // Skip here if dev-mode
-               if (defined('DEVELOPER')) return;
-
-               // Skip here if already cached
-               if ($this->listCached === false) {
-                       // Writes the cache file of our list away
-                       $cacheContent = serialize($this->classes);
-                       file_put_contents($this->listCacheFQFN, $cacheContent);
-               } // END - if
-
-               // Skip here if already cached
-               if ($this->classesCached === false) {
-                       // Generate a full-cache of all classes
-                       $cacheContent = '';
-                       foreach ($this->loadedClasses as $fqfn) {
-                               // Load the file
-                               $cacheContent .= file_get_contents($fqfn);
-                       } // END - foreach
-
-                       // And write it away
-                       file_put_contents($this->classCacheFQFN, $cacheContent);
-               } // END - if
-       }
-
        /**
         * Scans recursively a local path for class files which must have a prefix and a suffix as given by $this->suffix and $this->prefix
         *
@@ -240,7 +242,7 @@ class ClassLoader {
                if ($this->listCached === true) {
                        // Abort here
                        return;
-               }
+               } // END - if
 
                // Directories which our class loader ignores by default while
                // deep-scanning the directory structure.
@@ -260,7 +262,7 @@ class ClassLoader {
                // If the basePath is false it is invalid
                if ($basePath2 === false) {
                        /* @todo: Do not die here. */
-                       die("Cannot read {$basePath} !");
+                       die('Cannot read ' . $basePath . ' !');
                } else {
                        // Set base path
                        $basePath = $basePath2;
@@ -274,12 +276,14 @@ class ClassLoader {
                        // Get filename from iterator
                        $fileName = $entry->getFileName();
 
+                       // Get the FQFN and add it to our class list
+                       $fqfn = $entry->getRealPath();
+
                        // Is this file wanted?
                        //* DEBUG: */ echo "FOUND:{$fileName}<br />\n";
-                       if ((!in_array($fileName, $this->ignoreList)) && (substr($fileName, 0, strlen($this->prefix)) == $this->prefix) && (substr($fileName, -strlen($this->suffix), strlen($this->suffix)) == $this->suffix)) {
-                               // Get the FQFN and add it to our class list
-                               $fqfn = $entry->getRealPath();
+                       if ((!in_array($fileName, $this->ignoreList)) && (filesize($fqfn) > 100) && (substr($fileName, 0, strlen($this->prefix)) == $this->prefix) && (substr($fileName, -strlen($this->suffix), strlen($this->suffix)) == $this->suffix)) {
                                //* DEBUG: */ echo "ADD: {$fileName}<br />\n";
+                               // Add it to the list
                                $this->classes[$fileName] = $fqfn;
                        } // END - if
                } // END - foreach