use CoreFramework\Object\BaseFrameworkSystem;
// Import SPL stuff
+use \InvalidArgumentException;
use \RecursiveDirectoryIterator;
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
* @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
* @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
}
*/
public static function autoLoad ($className) {
// Try to include this class
- self::getSelfInstance()->includeClass($className);
+ self::getSelfInstance()->loadClassFile($className);
}
/**
* @param $className The class that shall be loaded
* @return void
*/
- public function includeClass ($className) {
+ private function loadClassFile ($className) {
+ // Trace message
+ /* 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);
// 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