ZendExtension.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Bundle\ZendBundle\DependencyInjection;
  11. use Symfony\Component\HttpKernel\DependencyInjection\Extension;
  12. use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
  13. use Symfony\Component\DependencyInjection\Loader\FileLocator;
  14. use Symfony\Component\DependencyInjection\ContainerBuilder;
  15. /**
  16. * ZendExtension is an extension for the Zend Framework libraries.
  17. *
  18. * @author Fabien Potencier <fabien.potencier@symfony-project.com>
  19. */
  20. class ZendExtension extends Extension
  21. {
  22. /**
  23. * Loads the Zend Framework configuration.
  24. *
  25. * Usage example:
  26. *
  27. * <zend:config>
  28. * <zend:logger priority="info" path="/path/to/some.log" />
  29. * </zend:config>
  30. *
  31. * @param array $config An array of configuration settings
  32. * @param ContainerBuilder $container A ContainerBuilder instance
  33. */
  34. public function configLoad(array $configs, ContainerBuilder $container)
  35. {
  36. $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
  37. $loader->load('logger.xml');
  38. $container->setAlias('logger', 'zend.logger');
  39. foreach ($configs as $config) {
  40. if (isset($config['logger'])) {
  41. $this->registerLoggerConfiguration($config, $container);
  42. }
  43. }
  44. }
  45. /**
  46. * Loads the logger configuration.
  47. *
  48. * Usage example:
  49. *
  50. * <zend:logger priority="info" path="/path/to/some.log" />
  51. *
  52. * @param array $config An array of configuration settings
  53. * @param ContainerBuilder $container A ContainerBuilder instance
  54. */
  55. protected function registerLoggerConfiguration($config, ContainerBuilder $container)
  56. {
  57. $config = $config['logger'];
  58. if (isset($config['priority'])) {
  59. $container->setParameter('zend.logger.priority', is_int($config['priority']) ? $config['priority'] : constant('\\Zend\\Log\\Logger::'.strtoupper($config['priority'])));
  60. }
  61. if (isset($config['path'])) {
  62. $container->setParameter('zend.logger.path', $config['path']);
  63. }
  64. if (isset($config['log_errors'])) {
  65. $definition = $container->findDefinition('zend.logger');
  66. if (false === $config['log_errors'] && $definition->hasMethodCall('registerErrorHandler')) {
  67. $container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler');
  68. } else {
  69. $container->findDefinition('zend.logger')->addMethodCall('registerErrorHandler');
  70. }
  71. }
  72. }
  73. /**
  74. * Returns the base path for the XSD files.
  75. *
  76. * @return string The XSD base path
  77. */
  78. public function getXsdValidationBasePath()
  79. {
  80. return __DIR__.'/../Resources/config/schema';
  81. }
  82. public function getNamespace()
  83. {
  84. return 'http://www.symfony-project.org/schema/dic/zend';
  85. }
  86. public function getAlias()
  87. {
  88. return 'zend';
  89. }
  90. }