Ver Fonte

[ZendBundle] added an option to register zend logger as an error handler

Noël GUILBERT há 14 anos atrás
pai
commit
d40d1746e0

+ 10 - 0
src/Symfony/Bundle/ZendBundle/DependencyInjection/ZendExtension.php

@@ -52,6 +52,16 @@ class ZendExtension extends Extension
         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');
+            }
+        }
     }
 
     /**

+ 1 - 0
src/Symfony/Bundle/ZendBundle/Resources/config/logger.xml

@@ -7,6 +7,7 @@
     <parameters>
         <parameter key="zend.logger.class">Symfony\Bundle\ZendBundle\Logger\Logger</parameter>
         <parameter key="zend.logger.priority" type="constant">Zend\Log\Logger::CRIT</parameter>
+        <parameter key="zend.logger.log_errors">true</parameter>
         <parameter key="zend.logger.writer.debug.class">Symfony\Bundle\ZendBundle\Logger\DebugLogger</parameter>
         <parameter key="zend.logger.writer.filesystem.class">Zend\Log\Writer\Stream</parameter>
         <parameter key="zend.formatter.filesystem.class">Zend\Log\Formatter\Simple</parameter>

+ 37 - 0
src/Symfony/Component/DependencyInjection/Definition.php

@@ -185,6 +185,43 @@ class Definition
         return $this;
     }
 
+    /**
+     * Removes a method to call after service initialization.
+     *
+     * @param  string $method    The method name to remove
+     *
+     * @return Definition The current instance
+     */
+    public function removeMethodCall($method)
+    {
+        foreach ($this->calls as $i => $call) {
+            if ($call[0] === $method) {
+                unset($this->calls[$i]);
+                break;
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Check if the current definition has a given method to call after service initialization.
+     *
+     * @param  string $method    The method name to search for
+     *
+     * @return boolean
+     */
+    public function hasMethodCall($method)
+    {
+        foreach ($this->calls as $i => $call) {
+            if ($call[0] === $method) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
     /**
      * Gets the methods to call after service initialization.
      *