<?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Mvc\Service; use Interop\Container\ContainerInterface; use Zend\Mvc\View\Http\ExceptionStrategy; use Zend\ServiceManager\FactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; class HttpExceptionStrategyFactory implements FactoryInterface { use HttpViewManagerConfigTrait; /** * @param ContainerInterface $container * @param string $name * @param null|array $options * @return ExceptionStrategy */ public function __invoke(ContainerInterface $container, $name, array $options = null) { $strategy = new ExceptionStrategy(); $config = $this->getConfig($container); $this->injectDisplayExceptions($strategy, $config); $this->injectExceptionTemplate($strategy, $config); return $strategy; } /** * Create and return ExceptionStrategy instance * * For use with zend-servicemanager v2; proxies to __invoke(). * * @param ServiceLocatorInterface $container * @return ExceptionStrategy */ public function createService(ServiceLocatorInterface $container) { return $this($container, ExceptionStrategy::class); } /** * Inject strategy with configured display_exceptions flag. * * @param ExceptionStrategy $strategy * @param array $config */ private function injectDisplayExceptions(ExceptionStrategy $strategy, array $config) { $flag = isset($config['display_exceptions']) ? $config['display_exceptions'] : false; $strategy->setDisplayExceptions($flag); } /** * Inject strategy with configured exception_template * * @param ExceptionStrategy $strategy * @param array $config */ private function injectExceptionTemplate(ExceptionStrategy $strategy, array $config) { $template = isset($config['exception_template']) ? $config['exception_template'] : 'error'; $strategy->setExceptionTemplate($template); } }