* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\ZendBundle\DependencyInjection; use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Config\FileLocator; /** * ZendExtension is an extension for the Zend Framework libraries. * * @author Fabien Potencier */ class ZendExtension extends Extension { /** * Loads the Zend Framework configuration. * * Usage example: * * * * * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ public function load(array $configs, ContainerBuilder $container) { $first = true; foreach ($configs as $config) { if (!isset($config['logger'])) { continue; } if ($first) { $first = false; $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('logger.xml'); $container->setAlias('logger', 'zend.logger'); } $this->registerLoggerConfiguration($config, $container); } } /** * Loads the logger configuration. * * Usage example: * * * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ protected function registerLoggerConfiguration($config, ContainerBuilder $container) { $config = $config['logger']; if (isset($config['priority'])) { $container->setParameter('zend.logger.priority', is_int($config['priority']) ? $config['priority'] : constant('\\Zend\\Log\\Logger::'.strtoupper($config['priority']))); } if (isset($config['path'])) { $container->setParameter('zend.logger.path', $config['path']); } if (isset($config['log_errors'])) { $definition = $container->findDefinition('zend.logger'); if (false === $config['log_errors'] && $definition->hasMethodCall('registerErrorHandler')) { $container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler'); } else { $container->findDefinition('zend.logger')->addMethodCall('registerErrorHandler'); } } } /** * Returns the base path for the XSD files. * * @return string The XSD base path */ public function getXsdValidationBasePath() { return __DIR__.'/../Resources/config/schema'; } public function getNamespace() { return 'http://www.symfony-project.org/schema/dic/zend'; } public function getAlias() { return 'zend'; } }