<?php class Autoloader { public static function init($container = null) { if (!isset($container)) { require_once __DIR__ . '/class-container.php'; $container = new Container(); } $autoloader_handler = $container->get(Autoloader_Handler::class); $was_included_by_autoloader = $autoloader_handler->is_initializing(); $plugin_locator = $container->get(Plugin_Locator::class); $plugins_handler = $container->get(Plugins_Handler::class); $current_plugin = $plugin_locator->find_current_plugin(); $active_plugins = $plugins_handler->get_active_plugins(true, !$was_included_by_autoloader); $cached_plugins = $plugins_handler->get_cached_plugins(); $all_plugins = array_merge($active_plugins, $cached_plugins); $all_plugins[] = $current_plugin; $all_plugins = array_values(array_unique($all_plugins)); $guard = $container->get(Latest_Autoloader_Guard::class); if ($guard->should_stop_init($current_plugin, $all_plugins, $was_included_by_autoloader)) { return; } $autoloader_handler->activate_autoloader($all_plugins); $hook_manager = $container->get(Hook_Manager::class); $hook_manager->add_action('shutdown', new Shutdown_Handler($plugins_handler, $cached_plugins, $was_included_by_autoloader)); } }