|Factory\AbstractFactoryInterface) * > * @psalm-type DelegatorsConfigurationType = array< * string, * array< * array-key, * (class-string|Factory\DelegatorFactoryInterface) * |callable(ContainerInterface,string,callable():object,array|null):object * > * > * @psalm-type FactoriesConfigurationType = array< * string, * (class-string|Factory\FactoryInterface) * |callable(ContainerInterface,?string,?array|null):object * > * @psalm-type InitializersConfigurationType = array< * array-key, * (class-string|Initializer\InitializerInterface) * |callable(ContainerInterface,object):void * > * @psalm-type LazyServicesConfigurationType = array{ * class_map?:array, * proxies_namespace?:non-empty-string, * proxies_target_dir?:non-empty-string, * write_proxy_files?:bool * } * @psalm-type ServiceManagerConfigurationType = array{ * abstract_factories?: AbstractFactoriesConfigurationType, * aliases?: array, * delegators?: DelegatorsConfigurationType, * factories?: FactoriesConfigurationType, * initializers?: InitializersConfigurationType, * invokables?: array, * lazy_services?: LazyServicesConfigurationType, * services?: array, * shared?:array, * ... * } */ interface ConfigInterface { /** * Configure a service manager. * * Implementations should pull configuration from somewhere (typically * local properties) and pass it to a ServiceManager's withConfig() method, * returning a new instance. * * @return ServiceManager */ public function configureServiceManager(ServiceManager $serviceManager); /** * Return configuration for a service manager instance as an array. * * Implementations MUST return an array compatible with ServiceManager::configure, * containing one or more of the following keys: * * - abstract_factories * - aliases * - delegators * - factories * - initializers * - invokables * - lazy_services * - services * - shared * * In other words, this should return configuration that can be used to instantiate * a service manager or plugin manager, or pass to its `withConfig()` method. * * @return array * @psalm-return ServiceManagerConfigurationType */ public function toArray(); }