public function __invoke(array $config = array()) { $di = new Di(); $diConfig = array('definition' => array('class' => array('Zend\\Cache\\Storage\\Adapter' => array('instantiator' => array('Eva\\Cache\\StorageFactory', 'factory')), 'Eva\\Cache\\StorageFactory' => array('methods' => array('factory' => array('cfg' => array('required' => true, 'type' => false)))))), 'instance' => array('Eva\\Cache\\StorageFactory' => array('parameters' => array('cfg' => array('adapter' => array('name' => 'filesystem', 'options' => array('cacheDir' => EVA_ROOT_PATH . '/data/cache/model/')), 'plugins' => array('serializer')))))); $globalConfig = $this->serviceLocator->get('Configuration'); $globalConfig = isset($globalConfig['cache']['model']) ? $globalConfig['cache']['model'] : array(); $diConfig = Config::mergeArray($diConfig, $globalConfig, $config); $di->configure(new DiConfig($diConfig)); return $di->get('Eva\\Cache\\StorageFactory'); }
public function __construct(array $config = array()) { $defaultConfig = array('transports' => array('smtp' => false, 'sendmail' => false, 'file' => true), 'message' => array(), 'di' => array('definition' => array('class' => array('Zend\\View\\Resolver\\AggregateResolver' => array('attach' => array('resolver' => array('required' => true, 'type' => 'Zend\\View\\Resolver\\TemplatePathStack'))))), 'instance' => array('Zend\\View\\Resolver\\TemplatePathStack' => array('parameters' => array('paths' => array(Message::VIEW_PATH_NAME => EVA_ROOT_PATH . '/data/'))), 'Zend\\View\\Resolver\\AggregateResolver' => array('injections' => array('Zend\\View\\Resolver\\TemplatePathStack')), 'Zend\\View\\Renderer\\PhpRenderer' => array('parameters' => array('resolver' => 'Zend\\View\\Resolver\\AggregateResolver')), 'Eva\\Mail\\Message' => array('parameters' => array('headers' => 'Zend\\Mail\\Headers', 'view' => 'Zend\\View\\Renderer\\PhpRenderer', 'viewModel' => 'Zend\\View\\Model\\ViewModel', 'encoding' => 'UTF-8')), 'Zend\\Mail\\Transport\\FileOptions' => array('parameters' => array('path' => EVA_ROOT_PATH . '/data/mail')), 'Zend\\Mail\\Transport\\File' => array('injections' => array('Zend\\Mail\\Transport\\FileOptions')), 'Zend\\Mail\\Transport\\Smtp' => array('injections' => array('Zend\\Mail\\Transport\\SmtpOptions'))))); $globalConfig = Api::_()->getConfig(); if (isset($globalConfig['mail'])) { $config = Config::mergeArray($defaultConfig, $globalConfig['mail'], $config); } else { $config = Config::mergeArray($defaultConfig['mail'], $config); } $diConfig = array(); if ($config['di']) { $diConfig = $config['di']; } $di = new Di(); $di->configure(new DiConfig($diConfig)); $this->message = $di->get('Eva\\Mail\\Message'); $allowTransports = $this->transportsClasses; $transportType = ''; if (is_string($config['transports'])) { $transportType = $config['transports']; $transportClass = isset($allowTransports[$transportType]) ? $allowTransports[$transportType] : null; if (!$transportClass) { throw new Exception\InvalidArgumentException(sprintf('Unknow transport type %s in method %s"', $transportType, __METHOD__)); } $transport = $di->get($transportClass); //\Zend\Di\Display\Console::export($di); $this->transports[$transportType] = $transport; } elseif (is_array($config['transports'])) { $transportTypes = $config['transports']; foreach ($transportTypes as $transportType => $value) { if (!$value) { continue; } $transportClass = isset($allowTransports[$transportType]) ? $allowTransports[$transportType] : null; if (!$transportClass) { throw new Exception\InvalidArgumentException(sprintf('Unknow transport type %s in method %s"', $transportType, __METHOD__)); } $this->transports[$transportType] = $di->get($transportClass); } } else { throw new Exception\InvalidArgumentException(sprintf('%s expects a string or array as transport config, "%s" received', __METHOD__, gettype($config['transports']))); } }