namespace CoreFramework\Loader;
// Import framework stuff
+use CoreFramework\Bootstrap\FrameworkBootstrap;
use CoreFramework\Configuration\FrameworkConfiguration;
-use CoreFramework\Object\BaseFrameworkSystem;
// Import SPL stuff
use \InvalidArgumentException;
private $ignoreList = array();
/**
- * Debug this class loader? (TRUE = yes, FALSE = no)
+ * Debug this class loader? (true = yes, false = no)
*/
- private $debug = FALSE;
+ private $debug = false;
/**
* Whether the file list is cached
*/
- private $listCached = FALSE;
+ private $listCached = false;
/**
* Wethe class content has been cached
*/
- private $classesCached = FALSE;
+ private $classesCached = false;
/**
* Filename for the list cache
/**
* By default the class loader is strict with naming-convention check
*/
- private static $strictNamingConventionCheck = TRUE;
+ private static $strictNamingConventionCheck = true;
/**
* Framework/application paths for classes, etc.
} // END - if
// Skip here if already cached
- if ($this->listCached === FALSE) {
+ if ($this->listCached === false) {
// Writes the cache file of our list away
$cacheContent = json_encode($this->foundClasses);
file_put_contents($this->listCacheFQFN, $cacheContent);
} // END - if
// Skip here if already cached
- if ($this->classesCached === FALSE) {
+ if ($this->classesCached === false) {
// Generate a full-cache of all classes
$cacheContent = '';
foreach (array_keys($this->loadedClasses) as $fqfn) {
// Debug message
//* NOISY-DEBUG: */ printf('[%s:%d]: pathName=%s' . PHP_EOL, __METHOD__, __LINE__, $pathName);
- // Is it not FALSE and accessible?
+ // Is it not false and accessible?
if (is_bool($pathName)) {
// Skip this
continue;
$pathName = realpath(sprintf(
'%s/%s/%s',
$cfg->getConfigEntry('application_base_path'),
- $cfg->getConfigEntry('app_name'),
+ $cfg->getConfigEntry('detected_app_name'),
$shortPath
));
// Debug message
//* NOISY-DEBUG: */ printf('[%s:%d]: shortPath=%s' . PHP_EOL, __METHOD__, __LINE__, $shortPath);
- // Create path name
- $pathName = realpath(sprintf(
+ // Construct path name
+ $pathName = sprintf(
'%s/%s',
- $cfg->getConfigEntry('framework_base_path'),
+ $cfg->getConfigEntry('root_base_path'),
$shortPath
- ));
+ );
// Debug message
- //* NOISY-DEBUG: */ printf('[%s:%d]: pathName[%s]=%s' . PHP_EOL, __METHOD__, __LINE__, gettype($pathName), $pathName);
+ //* NOISY-DEBUG: */ printf('[%s:%d]: pathName[%s]=%s - BEFORE!' . PHP_EOL, __METHOD__, __LINE__, gettype($pathName), $pathName);
+
+ // Try to find it
+ $pathName = realpath($pathName);
+
+ // Debug message
+ //* NOISY-DEBUG: */ printf('[%s:%d]: pathName[%s]=%s - AFTER!' . PHP_EOL, __METHOD__, __LINE__, gettype($pathName), $pathName);
// Is the path readable?
- if (is_dir($pathName)) {
+ if ((is_dir($pathName)) && (is_readable($pathName))) {
// Try to load the application classes
ClassLoader::getSelfInstance()->scanClassPath($pathName);
} // END - if
* @param $strictNamingConventionCheck Whether to strictly check naming-convention
* @return void
*/
- public static function enableStrictNamingConventionCheck ($strictNamingConventionCheck = TRUE) {
+ public static function enableStrictNamingConventionCheck ($strictNamingConventionCheck = true) {
self::$strictNamingConventionCheck = $strictNamingConventionCheck;
}
* @return void
*/
public static function registerTestsPath ($relativePath) {
+ // Trace message
+ //* NOISY-DEBUG: */ printf('[%s:%d]: relativePath=%s - CALLED!' . PHP_EOL, __METHOD__, __LINE__, $relativePath);
+
// "Register" it
self::$testPaths[$relativePath] = $relativePath;
+
+ // Trace message
+ //* NOISY-DEBUG: */ printf('[%s:%d]: EXIT!' . PHP_EOL, __METHOD__, __LINE__);
}
/**
* @return void
*/
public static function autoLoad ($className) {
+ // Trace message
+ //* NOISY-DEBUG: */ printf('[%s:%d]: className=%s - CALLED!' . PHP_EOL, __METHOD__, __LINE__, $className);
+
// Try to include this class
self::getSelfInstance()->loadClassFile($className);
+
+ // Trace message
+ //* NOISY-DEBUG: */ printf('[%s:%d]: EXIT!' . PHP_EOL, __METHOD__, __LINE__);
}
/**
*/
public function scanClassPath ($basePath, array $ignoreList = array() ) {
// Is a list has been restored from cache, don't read it again
- if ($this->listCached === TRUE) {
+ if ($this->listCached === true) {
// Abort here
return;
} // END - if
*/
$basePath2 = realpath($basePath);
- // If the basePath is FALSE it is invalid
- if ($basePath2 === FALSE) {
+ // If the basePath is false it is invalid
+ if ($basePath2 === false) {
/* @TODO: Do not exit here. */
exit(__METHOD__ . ': Cannot read ' . $basePath . ' !' . PHP_EOL);
} else {
} // END - while
}
- /**
- * Load extra config files
- *
- * @return void
- */
- public function loadExtraConfigs () {
- // Backup old prefix
- $oldPrefix = $this->prefix;
-
- // Set new prefix (temporary!)
- $this->prefix = 'config-';
-
- // Set base directory
- $basePath = $this->configInstance->getConfigEntry('framework_base_path') . 'config/';
-
- // Load all classes from the config directory
- $this->scanClassPath($basePath);
-
- // Include these extra configs now
- $this->includeExtraConfigs();
-
- // Set back the old prefix
- $this->prefix = $oldPrefix;
- }
-
/**
* Initializes our loader class
*
// Construct the FQFN for the cache
if (!defined('DEVELOPER')) {
- $this->listCacheFQFN = $this->configInstance->getConfigEntry('local_database_path') . 'list-' . $this->configInstance->getConfigEntry('app_name') . '.cache';
- $this->classCacheFQFN = $this->configInstance->getConfigEntry('local_database_path') . 'class-' . $this->configInstance->getConfigEntry('app_name') . '.cache';
+ $this->listCacheFQFN = $this->configInstance->getConfigEntry('local_database_path') . 'list-' . $this->configInstance->getConfigEntry('detected_app_name') . '.cache';
+ $this->classCacheFQFN = $this->configInstance->getConfigEntry('local_database_path') . 'class-' . $this->configInstance->getConfigEntry('detected_app_name') . '.cache';
} // END - if
// Set suffix and prefix from configuration
} // END - if
// IS the cache there?
- if (BaseFrameworkSystem::isReadableFile($this->listCacheFQFN)) {
+ if (FrameworkBootstrap::isReadableFile($this->listCacheFQFN)) {
// Get content
$cacheContent = file_get_contents($this->listCacheFQFN);
$this->foundClasses = json_decode($cacheContent);
// List has been restored from cache!
- $this->listCached = TRUE;
+ $this->listCached = true;
} // END - if
// Does the class cache exist?
- if (BaseFrameworkSystem::isReadableFile($this->listCacheFQFN)) {
+ if (FrameworkBootstrap::isReadableFile($this->listCacheFQFN)) {
// Then include it
- require $this->classCacheFQFN;
+ FrameworkBootstrap::loadInclude($this->classCacheFQFN);
// Mark the class cache as loaded
- $this->classesCached = TRUE;
+ $this->classesCached = true;
} // END - if
}
$classNameParts = explode("\\", $className);
// At least 3 parts should be there
- if ((self::$strictNamingConventionCheck === TRUE) && (count($classNameParts) < 3)) {
+ if ((self::$strictNamingConventionCheck === true) && (count($classNameParts) < 3)) {
// Namespace scheme is: Project\Package[\SubPackage...]
throw new InvalidArgumentException(sprintf('Class name "%s" is not conform to naming-convention: Project\Package[\SubPackage...]\SomeFooBar', $className));
} // END - if
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);
- require $this->foundClasses[$fileName];
+ FrameworkBootstrap::loadInclude($this->foundClasses[$fileName]);
//* NOISY-DEBUG: */ printf('[%s:%d] LOAD: %s - END' . PHP_EOL, __METHOD__, __LINE__, $fileName);
// Count this loaded class/interface/exception
$this->total++;
// Mark this class as loaded for other purposes than loading it.
- $this->loadedClasses[$this->foundClasses[$fileName]] = TRUE;
+ $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);
// Developer mode excludes caching (better debugging)
if (!defined('DEVELOPER')) {
// Reset cache
- //* NOISY-DEBUG: */ printf('[%s:%d] classesCached=FALSE' . PHP_EOL, __METHOD__, __LINE__);
- $this->classesCached = FALSE;
+ //* NOISY-DEBUG: */ printf('[%s:%d] classesCached=false' . PHP_EOL, __METHOD__, __LINE__);
+ $this->classesCached = false;
} // END - if
} else {
// Not found
}
}
- /**
- * Includes all extra config files
- *
- * @return void
- */
- private function includeExtraConfigs () {
- // Run through all class names (should not be much)
- foreach ($this->foundClasses as $fileName => $fqfn) {
- // 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);
- require $fqfn;
- //* 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);
- unset($this->foundClasses[$fileName]);
- } // END - if
- } // END - foreach
- }
-
/**
* Getter for total include counter
*