JezK
Edit File: modules-manager.php
<?php namespace SiteMailer; use SiteMailer\Classes\Module_Base; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } final class Manager { /** * @var Module_Base[] */ private array $modules = []; public static function get_module_list(): array { return [ 'Core', 'Connect', 'Settings', 'Logs', 'Mailer', 'Domain', 'Suppressions', 'Statuses', 'Reviews', 'Deactivation', ]; } /** * @codeCoverageIgnore */ public function __construct() { $modules = self::get_module_list(); foreach ( $modules as $module_name ) { $class_name = str_replace( '-', ' ', $module_name ); $class_name = str_replace( ' ', '', ucwords( $class_name ) ); $class_name = __NAMESPACE__ . '\\Modules\\' . $class_name . '\Module'; /** @var Module_Base $class_name */ if ( $class_name::is_active() ) { $this->modules[ $module_name ] = $class_name::instance(); } } } /** * @param string $module_name * * @return Module_Base|Module_Base[] */ public function get_modules( string $module_name ) { if ( $module_name ) { if ( isset( $this->modules[ $module_name ] ) ) { return $this->modules[ $module_name ]; } return null; } return $this->modules; } }