From 11f17f99af993508382bd6edba26442108a52734 Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Sun, 10 Mar 2024 01:49:27 +0100 Subject: [PATCH] feat: include default extensions in runtime Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- src/Extension/ExtensionsSet.php | 6 ++++++ src/Init.php | 18 ++++++++---------- src/Resources/bindings/index.php | 2 ++ 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Extension/ExtensionsSet.php b/src/Extension/ExtensionsSet.php index b09c8cf..650560e 100644 --- a/src/Extension/ExtensionsSet.php +++ b/src/Extension/ExtensionsSet.php @@ -12,6 +12,12 @@ class ExtensionsSet implements \IteratorAggregate { /** @var array<class-string<Extension>, Extension> */ private $extensions = []; + public function __construct( Extension ...$extensions ) { + foreach ( $extensions as $extension ) { + $this->add( $extension ); + } + } + public function add( Extension $extension ): void { $class = \get_class( $extension ); $this->extensions[ $class ] = $extension; diff --git a/src/Init.php b/src/Init.php index 96e310f..b0b8a47 100644 --- a/src/Init.php +++ b/src/Init.php @@ -56,19 +56,17 @@ final class Init { $backtrace = \debug_backtrace( \DEBUG_BACKTRACE_IGNORE_ARGS, 1 ); $filename = $backtrace[0]['file']; - $extensions = new ExtensionsSet(); - $this->discover_extensions( $extensions ); - - $kernel = new Kernel( $filename, $this->config, $extensions ); - $kernel->boot(); - } - - private function discover_extensions( $extensions ) { - $extensions->add( new ConfigExtension() ); - $extensions->add( new BuiltinExtension() ); + $extensions = new ExtensionsSet( + new BuiltinExtension(), + new ConfigExtension(), + new ConditionalExtension() + ); if ( class_exists( \WPDesk_Plugin_Info::class ) ) { $extensions->add( new LegacyExtension() ); } + + $kernel = new Kernel( $filename, $this->config, $extensions ); + $kernel->boot(); } } diff --git a/src/Resources/bindings/index.php b/src/Resources/bindings/index.php index 12db3d1..1fd46fc 100644 --- a/src/Resources/bindings/index.php +++ b/src/Resources/bindings/index.php @@ -2,8 +2,10 @@ use WPDesk\Init\Extension\CommonBinding\I18n; use WPDesk\Init\Extension\CommonBinding\RequirementsCheck; +use WPDesk\Init\Extension\CommonBinding\CustomOrderTableCompatibility; return [ RequirementsCheck::class, I18n::class, + CustomOrderTableCompatibility::class, ]; -- GitLab