|
@@ -15,6 +15,7 @@ use Symfony\Component\HttpKernel\DependencyInjection\Extension;
|
|
|
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
|
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
|
use Symfony\Component\Config\FileLocator;
|
|
|
+use Symfony\Component\Config\Definition\Processor;
|
|
|
|
|
|
/**
|
|
|
* ZendExtension is an extension for the Zend Framework libraries.
|
|
@@ -37,52 +38,27 @@ class ZendExtension extends Extension
|
|
|
*/
|
|
|
public function load(array $configs, ContainerBuilder $container)
|
|
|
{
|
|
|
- $first = true;
|
|
|
- foreach ($configs as $config) {
|
|
|
- if (!isset($config['logger'])) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- if ($first) {
|
|
|
- $first = false;
|
|
|
+ $configuration = new Configuration();
|
|
|
+ $processor = new Processor();
|
|
|
+ $config = $processor->process($configuration->getConfigTree(), $configs);
|
|
|
|
|
|
- $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
|
|
- $loader->load('logger.xml');
|
|
|
- $container->setAlias('logger', 'zend.logger');
|
|
|
- }
|
|
|
-
|
|
|
- $this->registerLoggerConfiguration($config, $container);
|
|
|
- }
|
|
|
- }
|
|
|
+ if (isset($config['logger'])) {
|
|
|
+ $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
|
|
+ $loader->load('logger.xml');
|
|
|
+ $container->setAlias('logger', 'zend.logger');
|
|
|
|
|
|
- /**
|
|
|
- * Loads the logger configuration.
|
|
|
- *
|
|
|
- * Usage example:
|
|
|
- *
|
|
|
- * <zend:logger priority="info" path="/path/to/some.log" />
|
|
|
- *
|
|
|
- * @param array $config An array of configuration settings
|
|
|
- * @param ContainerBuilder $container A ContainerBuilder instance
|
|
|
- */
|
|
|
- protected function registerLoggerConfiguration($config, ContainerBuilder $container)
|
|
|
- {
|
|
|
- $config = $config['logger'];
|
|
|
+ $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 {
|
|
|
+ if ($config['log_errors']) {
|
|
|
$container->findDefinition('zend.logger')->addMethodCall('registerErrorHandler');
|
|
|
+ } else {
|
|
|
+ if ($definition->hasMethodCall('registerErrorHandler')) {
|
|
|
+ $container->findDefinition('zend.logger')->removeMethodCall('registerErrorHandler');
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|