JezK
Edit File: plugin.php
<?php namespace Manage; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Plugin { public static $instance = null; public $modules_manager = null; private array $classes_aliases = []; public static function instance(): ?Plugin { if ( is_null( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } public function autoload( $class ) { if ( 0 !== strpos( $class, __NAMESPACE__ ) ) { return; } $has_class_alias = isset( $this->classes_aliases[ $class ] ); // Backward Compatibility: Save old class name for set an alias after the new class is loaded if ( $has_class_alias ) { $class_alias_name = $this->classes_aliases[ $class ]; $class_to_load = $class_alias_name; } else { $class_to_load = $class; } if ( ! class_exists( $class_to_load ) ) { $filename = strtolower( preg_replace( [ '/^' . __NAMESPACE__ . '\\\/', '/([a-z])([A-Z])/', '/_/', '/\\\/' ], [ '', '$1-$2', '-', DIRECTORY_SEPARATOR ], $class_to_load ) ); $filename = MANAGE_PATH . $filename . '.php'; if ( is_readable( $filename ) ) { include $filename; } } if ( $has_class_alias ) { class_alias( $class_alias_name, $class ); } } private function includes() { require_once MANAGE_PATH . 'includes/modules-manager.php'; $this->modules_manager = new Manager(); } public function __construct() { static $autoloader_registered = false; if ( ! $autoloader_registered ) { $autoloader_registered = spl_autoload_register( [ $this, 'autoload' ] ); } $this->includes(); } } Plugin::instance();