summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/vendor/jetpack-autoloader/class-php-autoloader.php')
-rw-r--r--plugins/jetpack/vendor/jetpack-autoloader/class-php-autoloader.php93
1 files changed, 93 insertions, 0 deletions
diff --git a/plugins/jetpack/vendor/jetpack-autoloader/class-php-autoloader.php b/plugins/jetpack/vendor/jetpack-autoloader/class-php-autoloader.php
new file mode 100644
index 00000000..7fcd3ffe
--- /dev/null
+++ b/plugins/jetpack/vendor/jetpack-autoloader/class-php-autoloader.php
@@ -0,0 +1,93 @@
+<?php
+/**
+ * This file was automatically generated by automattic/jetpack-autoloader.
+ *
+ * @package automattic/jetpack-autoloader
+ */
+
+namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ10_5;
+
+ // phpcs:ignore
+
+/**
+ * This class handles management of the actual PHP autoloader.
+ */
+class PHP_Autoloader {
+
+ /**
+ * Registers the autoloader with PHP so that it can begin autoloading classes.
+ *
+ * @param Version_Loader $version_loader The class loader to use in the autoloader.
+ */
+ public function register_autoloader( $version_loader ) {
+ // Make sure no other autoloaders are registered.
+ $this->unregister_autoloader();
+
+ // Set the global so that it can be used to load classes.
+ global $jetpack_autoloader_loader;
+ $jetpack_autoloader_loader = $version_loader;
+
+ // Ensure that the autoloader is first to avoid contention with others.
+ spl_autoload_register( array( self::class, 'load_class' ), true, true );
+ }
+
+ /**
+ * Unregisters the active autoloader so that it will no longer autoload classes.
+ */
+ public function unregister_autoloader() {
+ // Remove any v2 autoloader that we've already registered.
+ $autoload_chain = spl_autoload_functions();
+ if ( ! $autoload_chain ) {
+ return;
+ }
+ foreach ( $autoload_chain as $autoloader ) {
+ // We can identify a v2 autoloader using the namespace.
+ $namespace_check = null;
+
+ // Functions are recorded as strings.
+ if ( is_string( $autoloader ) ) {
+ $namespace_check = $autoloader;
+ } elseif ( is_array( $autoloader ) && is_string( $autoloader[0] ) ) {
+ // Static method calls have the class as the first array element.
+ $namespace_check = $autoloader[0];
+ } else {
+ // Since the autoloader has only ever been a function or a static method we don't currently need to check anything else.
+ continue;
+ }
+
+ // Check for the namespace without the generated suffix.
+ if ( 'Automattic\\Jetpack\\Autoloader\\jp' === substr( $namespace_check, 0, 32 ) ) {
+ spl_autoload_unregister( $autoloader );
+ }
+ }
+
+ // Clear the global now that the autoloader has been unregistered.
+ global $jetpack_autoloader_loader;
+ $jetpack_autoloader_loader = null;
+ }
+
+ /**
+ * Loads a class file if one could be found.
+ *
+ * Note: This function is static so that the autoloader can be easily unregistered. If
+ * it was a class method we would have to unwrap the object to check the namespace.
+ *
+ * @param string $class_name The name of the class to autoload.
+ *
+ * @return bool Indicates whether or not a class file was loaded.
+ */
+ public static function load_class( $class_name ) {
+ global $jetpack_autoloader_loader;
+ if ( ! isset( $jetpack_autoloader_loader ) ) {
+ return;
+ }
+
+ $file = $jetpack_autoloader_loader->find_class_file( $class_name );
+ if ( ! isset( $file ) ) {
+ return false;
+ }
+
+ require $file;
+ return true;
+ }
+}