]> git.mxchange.org Git - core.git/blobdiff - inc/loader/class_ClassLoader.php
Continued:
[core.git] / inc / loader / class_ClassLoader.php
index ed5b7825fcba6f8364f4715536e392394034ce02..0d0356e8d85a3f528e14839d6c1584afb7e5c350 100644 (file)
@@ -7,6 +7,7 @@ use CoreFramework\Configuration\FrameworkConfiguration;
 use CoreFramework\Object\BaseFrameworkSystem;
 
 // Import SPL stuff
+use \InvalidArgumentException;
 use \RecursiveDirectoryIterator;
 use \RecursiveIteratorIterator;
 
@@ -35,8 +36,8 @@ use \RecursiveIteratorIterator;
  * ----------------------------------
  * 1.5
  *  - Namespace scheme Project\Package[\SubPackage...] is fully supported and
- *    throws an E_USER_WARNING if not present. The last part will be always the
- *    class' name.
+ *    throws an InvalidArgumentException if not present. The last part will be
+ *    always the class' name.
  * 1.4
  *  - Some comments improved, other minor improvements
  * 1.3
@@ -189,11 +190,17 @@ class ClassLoader {
         * @return      void
         */
        public static function scanFrameworkClasses () {
+               // Trace message
+               //* NOISY-DEBUG: */ printf('[%s:%d]: CALLED!' . PHP_EOL, __METHOD__, __LINE__);
+
                // Cache loader instance
                $loaderInstance = self::getSelfInstance();
 
                // Load all classes
                foreach (self::$frameworkPaths as $pathName) {
+                       // Debug message
+                       //* NOISY-DEBUG: */ printf('[%s:%d]: pathName=%s' . PHP_EOL, __METHOD__, __LINE__, $pathName);
+
                        // Try to load the framework classes
                        $loaderInstance->scanClassPath('inc/main/' . $pathName . '/');
                } // END - foreach
@@ -205,18 +212,24 @@ class ClassLoader {
         * @return      void
         */
        public static function scanApplicationClasses () {
+               // Trace message
+               //* NOISY-DEBUG: */ printf('[%s:%d]: CALLED!' . PHP_EOL, __METHOD__, __LINE__);
+
                // Get config instance
                $cfg = FrameworkConfiguration::getSelfInstance();
 
                // Load all classes for the application
                foreach (self::$frameworkPaths as $class) {
                        // Create path name
-                       $path = sprintf('%s/%s/%s', $cfg->getConfigEntry('application_path'), $cfg->getConfigEntry('app_name'), $class);
+                       $pathName = sprintf('%s/%s/%s', $cfg->getConfigEntry('application_path'), $cfg->getConfigEntry('app_name'), $class);
+
+                       // Debug message
+                       //* NOISY-DEBUG: */ printf('[%s:%d]: pathName=%s' . PHP_EOL, __METHOD__, __LINE__, $pathName);
 
                        // Is the path readable?
-                       if (is_dir($path)) {
+                       if (is_dir($pathName)) {
                                // Try to load the application classes
-                               ClassLoader::getSelfInstance()->scanClassPath($path);
+                               ClassLoader::getSelfInstance()->scanClassPath($pathName);
                        } // END - if
                } // END - foreach
        }
@@ -338,7 +351,7 @@ class ClassLoader {
                }
 
                // Get a new iterator
-               /* NOISY-DEBUG: */ printf('[%s:%d] basePath=%s' . PHP_EOL, __METHOD__, __LINE__, $basePath);
+               //* NOISY-DEBUG: */ printf('[%s:%d] basePath=%s' . PHP_EOL, __METHOD__, __LINE__, $basePath);
                $iteratorInstance = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($basePath), RecursiveIteratorIterator::CHILD_FIRST);
 
                // Load all entries
@@ -358,23 +371,23 @@ class ClassLoader {
                                $iteratorInstance->next();
 
                                // Skip non-file entries
-                               /* NOISY-DEBUG: */ printf('[%s:%d] SKIP: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] SKIP: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                                continue;
                        } // END - if
 
                        // Is this file wanted?
-                       /* NOISY-DEBUG: */ printf('[%s:%d] FOUND: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] FOUND: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                        if ((substr($fileName, 0, strlen($this->prefix)) == $this->prefix) && (substr($fileName, -strlen($this->suffix), strlen($this->suffix)) == $this->suffix)) {
                                // Add it to the list
-                               /* NOISY-DEBUG: */ printf('[%s:%d] ADD: %s,fqfn=%s' . PHP_EOL, __METHOD__, __LINE__, $fileName, $fqfn);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] ADD: %s,fqfn=%s' . PHP_EOL, __METHOD__, __LINE__, $fileName, $fqfn);
                                $this->foundClasses[$fileName] = $fqfn;
                        } else {
                                // Not added
-                               /* NOISY-DEBUG: */ printf('[%s:%d] NOT ADDED: %s,fqfn=%s' . PHP_EOL, __METHOD__, __LINE__, $fileName, $fqfn);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] NOT ADDED: %s,fqfn=%s' . PHP_EOL, __METHOD__, __LINE__, $fileName, $fqfn);
                        }
 
                        // Advance to next entry
-                       /* NOISY-DEBUG: */ printf('[%s:%d] NEXT: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] NEXT: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                        $iteratorInstance->next();
                } // END - while
        }
@@ -414,7 +427,7 @@ class ClassLoader {
         */
        private function loadClassFile ($className) {
                // Trace message
-               /* NOISY-DEBUG: */ printf('[%s:%d] className=%s - CALLED!' . PHP_EOL, __METHOD__, __LINE__, $className);
+               //* NOISY-DEBUG: */ printf('[%s:%d] className=%s - CALLED!' . PHP_EOL, __METHOD__, __LINE__, $className);
 
                // The class name should contain at least 2 back-slashes, so split at them
                $classNameParts = explode("\\", $className);
@@ -422,7 +435,7 @@ class ClassLoader {
                // At least 3 parts should be there
                if (count($classNameParts) < 3) {
                        // Namespace scheme is: Project\Package[\SubPackage...]
-                       trigger_error(sprintf('Class name "%s" is not conform to naming-convention: Project\Package[\SubPackage...]\SomeFooBar', $className), E_USER_WARNING);
+                       throw new InvalidArgumentException(sprintf('Class name "%s" is not conform to naming-convention: Project\Package[\SubPackage...]\SomeFooBar', $className));
                } // END - if
 
                // Get last element
@@ -432,12 +445,12 @@ class ClassLoader {
                $fileName = $this->prefix . $shortClassName . $this->suffix;
 
                // Now look it up in our index
-               /* NOISY-DEBUG: */ printf('[%s:%d] ISSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+               //* NOISY-DEBUG: */ printf('[%s:%d] ISSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                if ((isset($this->foundClasses[$fileName])) && (!isset($this->loadedClasses[$this->foundClasses[$fileName]]))) {
                        // File is found and not loaded so load it only once
-                       /* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - START' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - START' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                        require($this->foundClasses[$fileName]);
-                       /* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - END' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - END' . PHP_EOL, __METHOD__, __LINE__, $fileName);
 
                        // Count this loaded class/interface/exception
                        $this->total++;
@@ -446,18 +459,18 @@ class ClassLoader {
                        $this->loadedClasses[$this->foundClasses[$fileName]] = TRUE;
 
                        // Remove it from classes list so it won't be found twice.
-                       /* NOISY-DEBUG: */ printf('[%s:%d] UNSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] UNSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                        unset($this->foundClasses[$fileName]);
 
                        // Developer mode excludes caching (better debugging)
                        if (!defined('DEVELOPER')) {
                                // Reset cache
-                               /* NOISY-DEBUG: */ printf('[%s:%d] classesCached=FALSE' . PHP_EOL, __METHOD__, __LINE__);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] classesCached=FALSE' . PHP_EOL, __METHOD__, __LINE__);
                                $this->classesCached = FALSE;
                        } // END - if
                } else {
                        // Not found
-                       /* NOISY-DEBUG: */ printf('[%s:%d] 404: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                       //* NOISY-DEBUG: */ printf('[%s:%d] 404: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                }
        }
 
@@ -472,12 +485,12 @@ class ClassLoader {
                        // Is this a config?
                        if (substr($fileName, 0, strlen($this->prefix)) == $this->prefix) {
                                // Then include it
-                               /* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - START' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - START' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                                require($fqfn);
-                               /* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - END' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - END' . PHP_EOL, __METHOD__, __LINE__, $fileName);
 
                                // Remove it from the list
-                               /* NOISY-DEBUG: */ printf('[%s:%d] UNSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
+                               //* NOISY-DEBUG: */ printf('[%s:%d] UNSET: %s' . PHP_EOL, __METHOD__, __LINE__, $fileName);
                                unset($this->foundClasses[$fileName]);
                        } // END - if
                } // END - foreach