Copyright upgraded to 2010
[core.git] / inc / loader / class_ClassLoader.php
index aa592e1127b8744c9c66002e7a9ff6db85229eb3..34fd3c3cfd1e64fce72775dbe1ab7db95055843e 100644 (file)
@@ -4,7 +4,7 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright (c) 2007 - 2009 Roland Haeder, this is free software
+ * @copyright  Copyright (c) 2007, 2008 Roland Haeder, 2009, 2010 Core Developer Team
  * @license            GNU GPL 3.0 or any newer version
  * @link               http://www.ship-simu.org
  *
@@ -25,6 +25,7 @@
  * 1.3
  *  - Constructor is now empty and factory method 'createClassLoader' is created
  *  - renamed loadClasses to scanClassPath
+ *  - Added initLoader(), $configInstance renamed to $configInstance
  * 1.2
  *  - ClassLoader rewritten to PHP SPL's own RecursiveIteratorIterator class
  * 1.1
@@ -39,11 +40,6 @@ class ClassLoader {
         */
        private static $selfInstance = null;
 
-       /**
-        * Configuration array
-        */
-       private $cfg = array();
-
        /**
         * Array with all classes
         */
@@ -88,12 +84,12 @@ class ClassLoader {
        /**
         * Filename for the list cache
         */
-       private $listCacheFQFN = "";
+       private $listCacheFQFN = '';
 
        /**
         * Cache for class content
         */
-       private $classCacheFQFN = "";
+       private $classCacheFQFN = '';
 
        /**
         * Counter for loaded include files
@@ -113,22 +109,39 @@ class ClassLoader {
        /**
         * Our renamed factory method
         *
-        * @param       $cfgInstance    Configuration class instance
+        * @param       $configInstance Configuration class instance
+        * @return      void
+        */
+       public final static function createClassLoader (FrameworkConfiguration $configInstance) {
+               // Get a new instance
+               $loaderInstance = new ClassLoader();
+
+               // Init the instance
+               $loaderInstance->initLoader($configInstance);
+
+               // Return the prepared instance
+               return $loaderInstance;
+       }
+
+       /**
+        * Initializes our loader class
+        *
+        * @param       $configInstance Configuration class instance
         * @return      void
         */
-       public final static function createClassLoader (FrameworkConfiguration $cfgInstance) {
+       protected function initLoader (FrameworkConfiguration $configInstance) {
                // Set configuration instance
-               $this->cfgInstance = $cfgInstance;
+               $this->configInstance = $configInstance;
 
                // Construct the FQFN for the cache
                if (!defined('DEVELOPER')) {
-                       $this->listCacheFQFN  = $this->cfgInstance->readConfig('local_db_path') . "list-" . $this->cfgInstance->readConfig('app_name') . ".cache";
-                       $this->classCacheFQFN = $this->cfgInstance->readConfig('local_db_path') . "class-" . $this->cfgInstance->readConfig('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
-               $this->suffix = $cfgInstance->readConfig('class_suffix');
-               $this->prefix = $cfgInstance->readConfig('class_prefix');
+               $this->suffix = $configInstance->getConfigEntry('class_suffix');
+               $this->prefix = $configInstance->getConfigEntry('class_prefix');
 
                // Set own instance
                self::$selfInstance = $this;
@@ -204,7 +217,7 @@ class ClassLoader {
                // Skip here if already cached
                if ($this->classesCached === false) {
                        // Generate a full-cache of all classes
-                       $cacheContent = "";
+                       $cacheContent = '';
                        foreach ($this->loadedClasses as $fqfn) {
                                // Load the file
                                $cacheContent .= file_get_contents($fqfn);
@@ -215,23 +228,6 @@ class ClassLoader {
                } // END - if
        }
 
-       /**
-        * Fall-back method. Please replace loadClasses() with scanClassPath() !
-        *
-        * @param       $basePath               The relative base path to 'base_path' constant for all classes
-        * @param       $ignoreList             An optional list (array forced) of directory and file names which shall be ignored
-        * @return      void
-        * @deprecated
-        * @todo        Rewrite your apps to scanClassPath()
-        */
-       public function loadClasses ($basePath, array $ignoreList = array() ) {
-               // This outputs an ugly message because you need to change to scanClassPath
-               print __METHOD__." is deprecated. Use scanClassPath() to make this warning go away.<br />\n";
-
-               // Call our new method
-               $this->scanClassPath($basePath, $ignoreList);
-       }
-
        /**
         * Scans recursively a local path for class files which must have a prefix and a suffix as given by $this->suffix and $this->prefix
         *
@@ -248,10 +244,10 @@ class ClassLoader {
 
                // Directories which our class loader ignores by default while
                // deep-scanning the directory structure.
-               $ignoreList[] = ".";
-               $ignoreList[] = "..";
-               $ignoreList[] = ".htaccess";
-               $ignoreList[] = ".svn";
+               $ignoreList[] = '.';
+               $ignoreList[] = '..';
+               $ignoreList[] = '.htaccess';
+               $ignoreList[] = '.svn';
 
                // Keep it in class for later usage
                $this->ignoreList = $ignoreList;
@@ -299,10 +295,10 @@ class ClassLoader {
                $oldPrefix = $this->prefix;
 
                // Set new prefix (temporary!)
-               $this->prefix = "config-";
+               $this->prefix = 'config-';
 
                // Set base directory
-               $basePath = sprintf("%sinc/config/", $this->cfgInstance->readConfig('base_path'));
+               $basePath = $this->configInstance->getConfigEntry('base_path') . 'inc/config/';
 
                // Load all classes from the config directory
                $this->scanClassPath($basePath);
@@ -385,7 +381,7 @@ class ClassLoader {
         */
        public function getPrintableIncludeList () {
                // Prepare the list
-               $includeList = "";
+               $includeList = '';
                foreach ($this->loadedClasses as $classFile) {
                        $includeList .= basename($classFile)."<br />\n";
                } // END - foreach