X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=framework%2Fbootstrap%2Fclass_FrameworkBootstrap.php;h=9f376df51ba254807866e0160364ccd306620950;hb=ef7a7e55c59c9e887e6bb09c8c02b8126309f716;hp=10cfa76a28caa65f2177f1b62a48c9edccc67b15;hpb=5135152658d9678af5871e0cd9ad86c259ad1e5c;p=core.git diff --git a/framework/bootstrap/class_FrameworkBootstrap.php b/framework/bootstrap/class_FrameworkBootstrap.php index 10cfa76a..9f376df5 100644 --- a/framework/bootstrap/class_FrameworkBootstrap.php +++ b/framework/bootstrap/class_FrameworkBootstrap.php @@ -11,6 +11,7 @@ use Org\Mxchange\CoreFramework\EntryPoint\ApplicationEntryPoint; use Org\Mxchange\CoreFramework\Factory\ObjectFactory; use Org\Mxchange\CoreFramework\Generic\NullPointerException; use Org\Mxchange\CoreFramework\Helper\Application\ApplicationHelper; +use Org\Mxchange\CoreFramework\Localization\ManageableLanguage; use Org\Mxchange\CoreFramework\Loader\ClassLoader; use Org\Mxchange\CoreFramework\Manager\ManageableApplication; use Org\Mxchange\CoreFramework\Middleware\Debug\DebugMiddleware; @@ -18,6 +19,7 @@ use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem; use Org\Mxchange\CoreFramework\Registry\GenericRegistry; use Org\Mxchange\CoreFramework\Request\Requestable; use Org\Mxchange\CoreFramework\Response\Responseable; +use Org\Mxchange\CoreFramework\Utils\String\StringUtils; // Import SPL stuff use \BadMethodCallException; @@ -29,7 +31,7 @@ use \SplFileInfo; * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2017 Core Developer Team + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.ship-simu.org * @@ -68,6 +70,16 @@ final class FrameworkBootstrap { */ private static $configurationInstance = NULL; + /** + * Database instance + */ + private static $databaseInstance = NULL; + + /** + * Language system instance + */ + private static $languageInstance = NULL; + /* * Includes applications may have. They will be tried in the given order, * some will become soon deprecated. @@ -117,24 +129,6 @@ final class FrameworkBootstrap { return self::$configurationInstance; } - /** - * Getter for request instance - * - * @return $requestInstance An instance of a Requestable class - */ - public static function getRequestInstance () { - return self::$requestInstance; - } - - /** - * Getter for response instance - * - * @return $responseInstance An instance of a Responseable class - */ - public static function getResponseInstance () { - return self::$responseInstance; - } - /** * "Getter" to get response/request type from analysis of the system. * @@ -250,6 +244,7 @@ final class FrameworkBootstrap { // Load basic include files to continue bootstrapping self::loadInclude(new SplFileInfo(sprintf('%smain%sinterfaces%sclass_FrameworkInterface.php', ApplicationEntryPoint::detectFrameworkPath(), DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR))); self::loadInclude(new SplFileInfo(sprintf('%smain%sclasses%sclass_BaseFrameworkSystem.php', ApplicationEntryPoint::detectFrameworkPath(), DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR))); + self::loadInclude(new SplFileInfo(sprintf('%smain%sclasses%sutils%sstring%sclass_StringUtils.php', ApplicationEntryPoint::detectFrameworkPath(), DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR))); self::loadInclude(new SplFileInfo(sprintf('%smain%sinterfaces%sregistry%sclass_Registerable.php', ApplicationEntryPoint::detectFrameworkPath(), DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR))); self::loadInclude(new SplFileInfo(sprintf('%sconfig%sclass_FrameworkConfiguration.php', ApplicationEntryPoint::detectFrameworkPath(), DIRECTORY_SEPARATOR))); @@ -352,7 +347,7 @@ final class FrameworkBootstrap { $applicationInstance = call_user_func_array( array( 'Org\Mxchange\CoreFramework\Helper\Application\ApplicationHelper', 'getSelfInstance' - ), array() + ), [] ); // Some sanity checks @@ -375,9 +370,6 @@ final class FrameworkBootstrap { )); } - // Set it in registry - GenericRegistry::getRegistry()->addInstance('application', $applicationInstance); - // Now call all methods in one go foreach (array('setupApplicationData', 'initApplication', 'launchApplication') as $methodName) { // Debug message @@ -398,7 +390,7 @@ final class FrameworkBootstrap { $applicationInstance = ApplicationHelper::getSelfInstance(); // Is the database instance already set? - if ($applicationInstance instanceof DatabaseConnector) { + if (self::getDatabaseInstance() instanceof DatabaseConnector) { // Yes, then abort here throw new BadMethodCallException('Method called twice.'); } // END - if @@ -410,7 +402,7 @@ final class FrameworkBootstrap { $connectionInstance = DatabaseConnection::createDatabaseConnection(DebugMiddleware::getSelfInstance(), $databaseInstance); // Set it in application helper - $applicationInstance->setDatabaseInstance($connectionInstance); + self::setDatabaseInstance($connectionInstance); } /** @@ -457,18 +449,11 @@ final class FrameworkBootstrap { * * @param $timezone The timezone string (e.g. Europe/Berlin) * @return $success If timezone was accepted - * @throws NullPointerException If $timezone is NULL * @throws InvalidArgumentException If $timezone is empty */ - public static function setDefaultTimezone ($timezone) { - // Is it null? - if (is_null($timezone)) { - // Throw NPE - throw new NullPointerException(NULL, BaseFrameworkSystem::EXCEPTION_IS_NULL_POINTER); - } elseif (!is_string($timezone)) { - // Is not a string - throw new InvalidArgumentException(sprintf('timezone[]=%s is not a string', gettype($timezone))); - } elseif ((is_string($timezone)) && (empty($timezone))) { + public static function setDefaultTimezone (string $timezone) { + // Is it set? + if (empty($timezone)) { // Entry is empty throw new InvalidArgumentException('timezone is empty'); } @@ -493,7 +478,21 @@ final class FrameworkBootstrap { * @todo Test more fields */ public static function isHttpSecured () { - return (isset($_SERVER['HTTPS'])); + return ( + ( + ( + isset($_SERVER['HTTPS']) + ) && ( + strtolower($_SERVER['HTTPS']) == 'on' + ) + ) || ( + ( + isset($_SERVER['HTTP_X_FORWARDED_PROTO']) + ) && ( + strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https' + ) + ) + ); } /** @@ -508,7 +507,7 @@ final class FrameworkBootstrap { // Do we have HTTPS? if (self::isHttpSecured()) { // Add the >s< for HTTPS - $protocol = 's'; + $protocol = 'https'; } // END - if // Construct the full URL and secure it against CSRF attacks @@ -592,7 +591,7 @@ final class FrameworkBootstrap { $requestType = self::getRequestTypeFromSystem(); // Create a new request object - $requestInstance = ObjectFactory::createObjectByName(sprintf('Org\Mxchange\CoreFramework\Request\%sRequest', BaseFrameworkSystem::convertToClassName($request))); + $requestInstance = ObjectFactory::createObjectByName(sprintf('Org\Mxchange\CoreFramework\Request\%sRequest', StringUtils::convertToClassName($request))); // Remember request instance here self::setRequestInstance($requestInstance); @@ -605,7 +604,7 @@ final class FrameworkBootstrap { } // END - if // ... and a new response object - $responseClass = sprintf('Org\Mxchange\CoreFramework\Response\%sResponse', BaseFrameworkSystem::convertToClassName($request)); + $responseClass = sprintf('Org\Mxchange\CoreFramework\Response\%sResponse', StringUtils::convertToClassName($request)); $responseInstance = ObjectFactory::createObjectByName($responseClass); // Remember response instance here @@ -656,6 +655,25 @@ final class FrameworkBootstrap { self::getConfigurationInstance()->setConfigEntry('detected_full_app_path', $applicationPath); self::getConfigurationInstance()->setConfigEntry('detected_app_name' , $application); } + + /** + * Getter for request instance + * + * @return $requestInstance An instance of a Requestable class + */ + public static function getRequestInstance () { + return self::$requestInstance; + } + + /** + * Getter for response instance + * + * @return $responseInstance An instance of a Responseable class + */ + public static function getResponseInstance () { + return self::$responseInstance; + } + /** * Setter for request instance * @@ -676,4 +694,43 @@ final class FrameworkBootstrap { self::$responseInstance = $responseInstance; } + /** + * Setter for database instance + * + * @param $databaseInstance An instance of a DatabaseConnection class + * @return void + */ + public static function setDatabaseInstance (DatabaseConnection $databaseInstance) { + self::$databaseInstance = $databaseInstance; + } + + /** + * Getter for database instance + * + * @return $databaseInstance An instance of a DatabaseConnection class + */ + public static function getDatabaseInstance () { + // Return instance + return self::$databaseInstance; + } + + /** + * Private getter for language instance + * + * @return $languageInstance An instance of a ManageableLanguage class + */ + public static function getLanguageInstance () { + return self::$languageInstance; + } + + /** + * Setter for language instance + * + * @param $languageInstance An instance of a ManageableLanguage class + * @return void + */ + public static function setLanguageInstance (ManageableLanguage $languageInstance) { + self::$languageInstance = $languageInstance; + } + }