*/ abstract class ServiceManagerFactory { /** * @var array */ private static $config = []; /** * @static * @param array $config */ public static function setApplicationConfig(array $config) { static::$config = $config; } /** * @static * @return array */ public static function getApplicationConfig() { return static::$config; } /** * @param array|null $config * @return ServiceManager */ public static function getServiceManager(array $config = null) { $config = $config ?: static::getApplicationConfig(); $serviceManagerConfig = new ServiceManagerConfig( isset($config['service_manager']) ? $config['service_manager'] : [] ); $serviceManager = new ServiceManager(); $serviceManagerConfig->configureServiceManager($serviceManager); $serviceManager->setService('ApplicationConfig', $config); $serviceManager->setAllowOverride(true); /* @var $moduleManager \Laminas\ModuleManager\ModuleManagerInterface */ $moduleManager = $serviceManager->get('ModuleManager'); $moduleManager->loadModules(); return $serviceManager; } }