PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.0-beta3
Elementor Website Builder – more than just a page builder v4.3.0-beta3
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
elementor / vendor / jetpack-autoloader / class-autoloader.php

class-autoloader.php in Elementor Website Builder – more than just a page builder 4.3.0-beta3, at vendor/jetpack-autoloader/class-autoloader.php

94 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * This file was automatically generated by automattic/jetpack-autoloader.
4 *
5 * @package automattic/jetpack-autoloader
6 */
7
8 namespace Automattic\Jetpack\Autoloader\jp9596fa42a27a19b46fd381ad6137fd57\al5_0_23;
9
10 // phpcs:ignore
11
12 /**
13 * This class handles management of the actual PHP autoloader.
14 */
15 class Autoloader {
16
17 /**
18 * Checks to see whether or not the autoloader should be initialized and then initializes it if so.
19 *
20 * @param Container|null $container The container we want to use for autoloader initialization. If none is given
21 * then a container will be created automatically.
22 */
23 public static function init( $container = null ) {
24 // The container holds and manages the lifecycle of our dependencies
25 // to make them easier to work with and increase flexibility.
26 if ( ! isset( $container ) ) {
27 require_once __DIR__ . '/class-container.php';
28 $container = new Container();
29 }
30
31 // phpcs:disable Generic.Commenting.DocComment.MissingShort
32
33 /** @var Autoloader_Handler $autoloader_handler */
34 $autoloader_handler = $container->get( Autoloader_Handler::class );
35
36 // If the autoloader is already initializing it means that it has included us as the latest.
37 $was_included_by_autoloader = $autoloader_handler->is_initializing();
38
39 /** @var Plugin_Locator $plugin_locator */
40 $plugin_locator = $container->get( Plugin_Locator::class );
41
42 /** @var Plugins_Handler $plugins_handler */
43 $plugins_handler = $container->get( Plugins_Handler::class );
44
45 // The current plugin is the one that we are attempting to initialize here.
46 $current_plugin = $plugin_locator->find_current_plugin();
47
48 // The active plugins are those that we were able to discover on the site. This list will not
49 // include mu-plugins, those activated by code, or those who are hidden by filtering. We also
50 // want to take care to not consider the current plugin unknown if it was included by an
51 // autoloader. This avoids the case where a plugin will be marked "active" while deactivated
52 // due to it having the latest autoloader.
53 $active_plugins = $plugins_handler->get_active_plugins( true, ! $was_included_by_autoloader );
54
55 // The cached plugins are all of those that were active or discovered by the autoloader during a previous request.
56 // Note that it's possible this list will include plugins that have since been deactivated, but after a request
57 // the cache should be updated and the deactivated plugins will be removed.
58 $cached_plugins = $plugins_handler->get_cached_plugins();
59
60 // We combine the active list and cached list to preemptively load classes for plugins that are
61 // presently unknown but will be loaded during the request. While this may result in us considering packages in
62 // deactivated plugins there shouldn't be any problems as a result and the eventual consistency is sufficient.
63 $all_plugins = array_merge( $active_plugins, $cached_plugins );
64
65 // In particular we also include the current plugin to address the case where it is the latest autoloader
66 // but also unknown (and not cached). We don't want it in the active list because we don't know that it
67 // is active but we need it in the all plugins list so that it is considered by the autoloader.
68 $all_plugins[] = $current_plugin;
69
70 // We require uniqueness in the array to avoid processing the same plugin more than once.
71 $all_plugins = array_values( array_unique( $all_plugins ) );
72
73 /** @var Latest_Autoloader_Guard $guard */
74 $guard = $container->get( Latest_Autoloader_Guard::class );
75 if ( $guard->should_stop_init( $current_plugin, $all_plugins, $was_included_by_autoloader ) ) {
76 return;
77 }
78
79 // Initialize the autoloader using the handler now that we're ready.
80 $autoloader_handler->activate_autoloader( $all_plugins );
81
82 /** @var Hook_Manager $hook_manager */
83 $hook_manager = $container->get( Hook_Manager::class );
84
85 // Register a shutdown handler to clean up the autoloader.
86 $hook_manager->add_action( 'shutdown', new Shutdown_Handler( $plugins_handler, $cached_plugins, $was_included_by_autoloader ) );
87
88 // Register a plugins_loaded handler to check for conflicting autoloaders.
89 $hook_manager->add_action( 'plugins_loaded', array( $guard, 'check_for_conflicting_autoloaders' ), 1 );
90
91 // phpcs:enable Generic.Commenting.DocComment.MissingShort
92 }
93 }
94