diff --git a/src/Extension/ExtensionsSet.php b/src/Extension/ExtensionsSet.php index b09c8cf0fad958c361994613fbb53aa8687292ae..650560e9e1418d636b274c24f68f02e2683e1519 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 96e310ff397d52c42c3fc079b76643e91f9b4206..b0b8a4797f3337554a9d682d28b43ad259607f5c 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 12db3d10bab2e036bba058f9876a811b5d18bc00..1fd46fcde06549135521675dd3c4dc2b2ff7874a 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, ];