From 6f2e941eb154d05f5b7a143beeada495434c3d30 Mon Sep 17 00:00:00 2001 From: Abel Hoogeveen Date: Thu, 20 Feb 2020 12:43:40 +0100 Subject: [PATCH] Changed Configurator boot process. - Components are now initialized before deferredComponentClasses are called. This ensures that components are properly prepared to be called. - Directories are now added to components before components are initialized. The following order has thus been established: 3.1 Load Components 3.1.1 setInstance of component 3.1.2 run onCreateContainer() 3.2 Add directories by category 3.3 each component init() 3.4 deferComponentClass invoke See document on FuzeWorks boot order. --- .gitattributes | 3 ++- docs/boot.txt | 27 +++++++++++++++++++++++++ src/FuzeWorks/Configurator.php | 36 +++++++++++++++++++++------------- src/FuzeWorks/Factory.php | 7 ------- src/FuzeWorks/Logger.php | 27 +++++++------------------ 5 files changed, 58 insertions(+), 42 deletions(-) create mode 100644 docs/boot.txt diff --git a/.gitattributes b/.gitattributes index d5966aa..40d3a3d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,4 +2,5 @@ .gitignore export-ignore .gitlab-ci.yml export-ignore .travis.yml export-ignore -test/ export-ignore \ No newline at end of file +test/ export-ignore +docs/ export-ignore \ No newline at end of file diff --git a/docs/boot.txt b/docs/boot.txt new file mode 100644 index 0000000..2193c6b --- /dev/null +++ b/docs/boot.txt @@ -0,0 +1,27 @@ +FuzeWorks boot process + +1. + 1.1 Temp/Log directory set + 1.2 Debug parameters set +2. + 2.1 Define ENVIRONMENT + 2.2 Core::init() + 2.2.1 CWD Set + 2.2.2 CoreDir set + 2.2.3 Constants defined + 2.2.4 shutdown/error/exception handlers set + 2.3 new Factory() + 2.3.1 new Config, Logger, Events, Libraries, Helpers, Plugins +3. + 3.1 Load Components + 3.1.1 setInstance of component + 3.1.2 run onCreateContainer() + 3.2 Add directories by category + 3.3 each component init() + 3.4 deferComponentClass invoke +4. + 4.1 Factory::initFactory() + 4.1.1 enable/disable Events + 4.1.2 Plugins::loadHeadersFromPluginPaths() + 4.1.3 coreStartEvent() +5. Return container \ No newline at end of file diff --git a/src/FuzeWorks/Configurator.php b/src/FuzeWorks/Configurator.php index 9e72214..ca15c55 100644 --- a/src/FuzeWorks/Configurator.php +++ b/src/FuzeWorks/Configurator.php @@ -347,17 +347,18 @@ class Configurator // Then prepare the debugger $debug = ($this->parameters['debugEnabled'] && $this->parameters['debugMatch'] ? true : false); - // Then load the framework - $container = Core::init(); - Logger::newLevel("Creating container..."); + // Define environment constants if ($debug == true) - { define('ENVIRONMENT', 'DEVELOPMENT'); - Logger::enable(); - } else define('ENVIRONMENT', 'PRODUCTION'); + // Load the Framework + $container = Core::init(); + if ($debug) + Logger::enable(); + + Logger::newLevel("Creating container..."); // Load components foreach ($this->components as $componentSuperClass => $component) @@ -381,6 +382,21 @@ class Configurator $component->onCreateContainer($container); } + // Add directories to Components + foreach ($this->directories as $component => $priorityArray) + { + Logger::logDebug("Adding directories for '" . $component . "'"); + if (method_exists($container->{$component}, 'setDirectories')) + $container->{$component}->setDirectories($priorityArray); + } + + // Initialize all components + foreach ($container as $component) + { + if (method_exists($component, 'init')) + $component->init(); + } + // Invoke deferredComponentClass on FuzeWorks\Core classes foreach ($this->deferredComponentClassMethods as $componentClass => $deferredComponentClasses) { @@ -398,14 +414,6 @@ class Configurator } } - // Add directories to Components - foreach ($this->directories as $component => $priorityArray) - { - Logger::logDebug("Adding directories for '" . $component . "'"); - if (method_exists($container->{$component}, 'setDirectories')) - $container->{$component}->setDirectories($priorityArray); - } - $container->initFactory(); Logger::stopLevel(); return $container; diff --git a/src/FuzeWorks/Factory.php b/src/FuzeWorks/Factory.php index 37e1892..d40c7b4 100644 --- a/src/FuzeWorks/Factory.php +++ b/src/FuzeWorks/Factory.php @@ -170,13 +170,6 @@ class Factory if (!$cfg->get('enable_events')) Events::disable(); - // Initialize all components - foreach ($this as $component) - { - if (method_exists($component, 'init')) - $component->init(); - } - // Initialize all plugins $this->plugins->loadHeadersFromPluginPaths(); diff --git a/src/FuzeWorks/Logger.php b/src/FuzeWorks/Logger.php index 9b03349..edcb7b6 100644 --- a/src/FuzeWorks/Logger.php +++ b/src/FuzeWorks/Logger.php @@ -533,35 +533,22 @@ class Logger { public static function getType($type): string { switch ($type) { + case E_PARSE: + case E_CORE_ERROR: + case E_COMPILE_ERROR: + case E_USER_ERROR: + case E_STRICT: + case E_RECOVERABLE_ERROR: case E_ERROR: return 'ERROR'; - case E_WARNING: - return 'WARNING'; - case E_PARSE: - return 'ERROR'; case E_NOTICE: - return 'WARNING'; - case E_CORE_ERROR: - return 'ERROR'; case E_CORE_WARNING: - return 'WARNING'; - case E_COMPILE_ERROR: - return 'ERROR'; case E_COMPILE_WARNING: - return 'WARNING'; - case E_USER_ERROR: - return 'ERROR'; case E_USER_WARNING: - return 'WARNING'; case E_USER_NOTICE: - return 'WARNING'; case E_USER_DEPRECATED: - return 'WARNING'; - case E_STRICT: - return 'ERROR'; - case E_RECOVERABLE_ERROR: - return 'ERROR'; case E_DEPRECATED: + case E_WARNING: return 'WARNING'; }