From 2eac7fa61bc152da2e962d55e3a44e56faa12f93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 16 Jul 2017 13:14:01 +0200 Subject: [PATCH 1/1] Continued: - rewrote some parts of the class loader to e.g. avoid loading full lust into variable and then only decode it - renamed shortended variables - cut a very long variable down a bit (one word) - ignored all logfiles in root directory MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .gitignore | 1 + framework/loader/class_ClassLoader.php | 64 +++++++++++++------------- index.php | 2 +- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index f713dcee..cf01b078 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ /reports/ /vendor/ /phpunit.xml +/*.log diff --git a/framework/loader/class_ClassLoader.php b/framework/loader/class_ClassLoader.php index e1660b25..9f78f969 100644 --- a/framework/loader/class_ClassLoader.php +++ b/framework/loader/class_ClassLoader.php @@ -117,7 +117,7 @@ class ClassLoader { /** * By default the class loader is strict with naming-convention check */ - private static $strictNamingConventionCheck = true; + private static $strictNamingConvention = true; /** * Framework/application paths for classes, etc. @@ -207,7 +207,7 @@ class ClassLoader { $loaderInstance = self::getSelfInstance(); // Get config instance - $cfg = FrameworkConfiguration::getSelfInstance(); + $configInstance = FrameworkConfiguration::getSelfInstance(); // Load all classes foreach (self::$frameworkPaths as $shortPath) { @@ -215,26 +215,28 @@ class ClassLoader { //* NOISY-DEBUG: */ printf('[%s:%d]: shortPath=%s' . PHP_EOL, __METHOD__, __LINE__, $shortPath); // Generate full path from it - $pathName = realpath(sprintf( - '%smain/%s/', - $cfg->getConfigEntry('framework_base_path'), - $shortPath + $realPathName = realpath(sprintf( + '%smain%s%s%s', + $configInstance->getConfigEntry('framework_base_path'), + DIRECTORY_SEPARATOR, + $shortPath, + DIRECTORY_SEPARATOR )); // Debug message - //* NOISY-DEBUG: */ printf('[%s:%d]: pathName=%s' . PHP_EOL, __METHOD__, __LINE__, $pathName); + //* NOISY-DEBUG: */ printf('[%s:%d]: realPathName=%s' . PHP_EOL, __METHOD__, __LINE__, $realPathName); // Is it not false and accessible? - if (is_bool($pathName)) { + if (is_bool($realPathName)) { // Skip this continue; - } elseif (!is_readable($pathName)) { + } elseif (!is_readable($realPathName)) { // @TODO Throw exception instead of break break; } // Try to load the framework classes - $loaderInstance->scanClassPath($pathName); + $loaderInstance->scanClassPath($realPathName); } // END - foreach // Trace message @@ -254,7 +256,7 @@ class ClassLoader { $loaderInstance = self::getSelfInstance(); // Get config instance - $cfg = FrameworkConfiguration::getSelfInstance(); + $configInstance = FrameworkConfiguration::getSelfInstance(); // Load all classes for the application foreach (self::$frameworkPaths as $shortPath) { @@ -263,9 +265,11 @@ class ClassLoader { // Create path name $pathName = realpath(sprintf( - '%s/%s/%s', - $cfg->getConfigEntry('application_base_path'), - $cfg->getConfigEntry('detected_app_name'), + '%s%s%s%s%s', + $configInstance->getConfigEntry('application_base_path'), + DIRECTORY_SEPARATOR, + $configInstance->getConfigEntry('detected_app_name'), + DIRECTORY_SEPARATOR, $shortPath )); @@ -293,7 +297,7 @@ class ClassLoader { //* NOISY-DEBUG: */ printf('[%s:%d]: CALLED!' . PHP_EOL, __METHOD__, __LINE__); // Get config instance - $cfg = FrameworkConfiguration::getSelfInstance(); + $configInstance = FrameworkConfiguration::getSelfInstance(); // Load all classes for the application foreach (self::$testPaths as $shortPath) { @@ -302,8 +306,9 @@ class ClassLoader { // Construct path name $pathName = sprintf( - '%s/%s', - $cfg->getConfigEntry('root_base_path'), + '%s%s%s', + $configInstance->getConfigEntry('root_base_path'), + DIRECTORY_SEPARATOR, $shortPath ); @@ -311,15 +316,15 @@ class ClassLoader { //* NOISY-DEBUG: */ printf('[%s:%d]: pathName[%s]=%s - BEFORE!' . PHP_EOL, __METHOD__, __LINE__, gettype($pathName), $pathName); // Try to find it - $pathName = realpath($pathName); + $realPathName = realpath($pathName); // Debug message - //* NOISY-DEBUG: */ printf('[%s:%d]: pathName[%s]=%s - AFTER!' . PHP_EOL, __METHOD__, __LINE__, gettype($pathName), $pathName); + //* NOISY-DEBUG: */ printf('[%s:%d]: realPathName[%s]=%s - AFTER!' . PHP_EOL, __METHOD__, __LINE__, gettype($realPathName), $realPathName); // Is the path readable? - if ((is_dir($pathName)) && (is_readable($pathName))) { + if ((is_dir($realPathName)) && (is_readable($realPathName))) { // Try to load the application classes - ClassLoader::getSelfInstance()->scanClassPath($pathName); + ClassLoader::getSelfInstance()->scanClassPath($realPathName); } // END - if } // END - foreach @@ -330,11 +335,11 @@ class ClassLoader { /** * Enables or disables strict naming-convention tests on class loading * - * @param $strictNamingConventionCheck Whether to strictly check naming-convention + * @param $strictNamingConvention Whether to strictly check naming-convention * @return void */ - public static function enableStrictNamingConventionCheck ($strictNamingConventionCheck = true) { - self::$strictNamingConventionCheck = $strictNamingConventionCheck; + public static function enableStrictNamingConventionCheck ($strictNamingConvention = true) { + self::$strictNamingConvention = $strictNamingConvention; } /** @@ -442,7 +447,7 @@ class ClassLoader { // Get the "FQFN" (path and file name) $fqfn = $currentEntry->getRealPath(); - // Current entry must be a file, not smaller than 100 bytes and not on ignore list + // Current entry must be a file, not smaller than 100 bytes and not on ignore list if ((!$currentEntry->isFile()) || (in_array($fileName, $this->ignoreList)) || (filesize($fqfn) < 100)) { // Advance to next entry $iteratorInstance->next(); @@ -499,11 +504,8 @@ class ClassLoader { // IS the cache there? if (FrameworkBootstrap::isReadableFile($this->listCacheFQFN)) { - // Get content - $cacheContent = file_get_contents($this->listCacheFQFN); - - // And convert it - $this->foundClasses = json_decode($cacheContent); + // Load and convert it + $this->foundClasses = json_decode(file_get_contents($this->listCacheFQFN)); // List has been restored from cache! $this->listCached = true; @@ -536,7 +538,7 @@ class ClassLoader { $classNameParts = explode("\\", $className); // At least 3 parts should be there - if ((self::$strictNamingConventionCheck === true) && (count($classNameParts) < 3)) { + if ((self::$strictNamingConvention === 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 diff --git a/index.php b/index.php index f2dae4d4..c5ab7dd8 100644 --- a/index.php +++ b/index.php @@ -25,7 +25,7 @@ use \Exception; * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.org * -- 2.30.2