Pārlūkot izejas kodu

[ZF-9555] Zend_Log:

- resolved variable $writerName undeclared.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22524 44c647ce-9c0f-0410-b52a-842ac1e357ba
ramon 15 gadi atpakaļ
vecāks
revīzija
0cbb10893b
2 mainītis faili ar 55 papildinājumiem un 27 dzēšanām
  1. 17 14
      library/Zend/Log.php
  2. 38 13
      tests/Zend/Log/LogTest.php

+ 17 - 14
library/Zend/Log.php

@@ -75,19 +75,19 @@ class Zend_Log
      * @var callback
      */
     protected $_origErrorHandler       = null;
-    
+
     /**
      *
      * @var boolean
      */
     protected $_registeredErrorHandler = false;
-    
+
     /**
      *
      * @var array
      */
     protected $_errorHandlerMap        = false;
-    
+
     /**
      *
      * @var string
@@ -153,6 +153,9 @@ class Zend_Log
         $writer = $this->_constructFromConfig('writer', $config, $this->_defaultWriterNamespace);
 
         if (!$writer instanceof Zend_Log_Writer_Abstract) {
+            $writerName = is_object($writer)
+                        ? get_class($writer)
+                        : 'The specified writer';
             /** @see Zend_Log_Exception */
             require_once 'Zend/Log/Exception.php';
             throw new Zend_Log_Exception("{$writerName} does not extend Zend_Log_Writer_Abstract!");
@@ -460,7 +463,7 @@ class Zend_Log
     public function setEventItem($name, $value) {
         $this->_extras = array_merge($this->_extras, array($name => $value));
     }
-    
+
     /**
      * Register Logging system as an error handler to log php errors
      * Note: it still calls the original error handler if set_error_handler is able to return it.
@@ -479,12 +482,12 @@ class Zend_Log
     public function registerErrorHandler()
     {
         // Only register once.  Avoids loop issues if it gets registered twice.
-        if ($this->_registeredErrorHandler) { 
-        	return $this; 
+        if ($this->_registeredErrorHandler) {
+        	return $this;
         }
-        
+
         $this->_origErrorHandler = set_error_handler(array($this, 'errorHandler'));
-        
+
         // Contruct a default map of phpErrors to Zend_Log priorities.
         // Some of the errors are uncatchable, but are included for completeness
         $this->_errorHandlerMap = array(
@@ -506,11 +509,11 @@ class Zend_Log
         if (defined('E_USER_DEPRECATED')) {
             $this->_errorHandlerMap['E_USER_DEPRECATED'] = Zend_Log::DEBUG;
         }
-        
+
         $this->_registeredErrorHandler = true;
         return $this;
     }
-    
+
     /**
      * Error Handler will convert error into log message, and then call the original error handler
      *
@@ -525,7 +528,7 @@ class Zend_Log
     public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
     {
         $errorLevel = error_reporting();
-        
+
         if ($errorLevel && $errno) {
             if (isset($this->_errorHandlerMap[$errno])) {
                 $priority = $this->_errorHandlerMap[$errno];
@@ -534,7 +537,7 @@ class Zend_Log
             }
             $this->log($errstr, $priority, array('errno'=>$errno, 'file'=>$errfile, 'line'=>$errline, 'context'=>$errcontext));
         }
-        
+
         if ($this->_origErrorHandler !== null) {
             return call_user_func($this->_origErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext);
         }
@@ -543,7 +546,7 @@ class Zend_Log
 
     /**
      * Set timestamp format for log entries.
-     * 
+     *
      * @param string $format
      * @return Zend_Log
      */
@@ -555,7 +558,7 @@ class Zend_Log
 
     /**
      * Get timestamp format used for log entries.
-     * 
+     *
      * @return string
      */
     public function getTimestampFormat()

+ 38 - 13
tests/Zend/Log/LogTest.php

@@ -31,6 +31,9 @@ require_once 'Zend/Log/Writer/Mock.php';
 /** Zend_Log_Writer_Stream */
 require_once 'Zend/Log/Writer/Stream.php';
 
+/** Zend_Log_FactoryInterface */
+require_once 'Zend/Log/FactoryInterface.php';
+
 /**
  * @category   Zend
  * @package    Zend_Log
@@ -241,7 +244,7 @@ class Zend_Log_LogTest extends PHPUnit_Framework_TestCase
         $info = $event['info'];
         $this->assertContains('nonesuch', $info);
     }
-    
+
     // Factory
 
     public function testLogConstructFromConfigStream()
@@ -298,36 +301,36 @@ class Zend_Log_LogTest extends PHPUnit_Framework_TestCase
         $logger = new Zend_Log();
         $logger->addWriter($writer);
         $this->errWriter = $writer;
-        
-        
+
+
         $oldErrorLevel = error_reporting();
-        
+
         $this->expectingLogging = true;
         error_reporting(E_ALL | E_STRICT);
-        
+
         $oldHandler = set_error_handler(array($this, 'verifyHandlerData'));
         $logger->registerErrorHandler();
-        
+
         trigger_error("Testing notice shows up in logs", E_USER_NOTICE);
         trigger_error("Testing warning shows up in logs", E_USER_WARNING);
         trigger_error("Testing error shows up in logs", E_USER_ERROR);
-        
+
         $this->expectingLogging = false;
         error_reporting(0);
-        
+
         trigger_error("Testing notice misses logs", E_USER_NOTICE);
         trigger_error("Testing warning misses logs", E_USER_WARNING);
         trigger_error("Testing error misses logs", E_USER_ERROR);
-        
+
         restore_error_handler(); // Pop off the Logger
         restore_error_handler(); // Pop off the verifyHandlerData
         error_reporting($oldErrorLevel); // Restore original reporting level
         unset($this->errWriter);
     }
-    
+
     /**
      * @group ZF-9192
-     * Used by testUsingWithErrorHandler - 
+     * Used by testUsingWithErrorHandler -
      * verifies that the data written to the original logger is the same as the data written in Zend_Log
      */
     public function verifyHandlerData($errno, $errstr, $errfile, $errline, $errcontext)
@@ -343,7 +346,7 @@ class Zend_Log_LogTest extends PHPUnit_Framework_TestCase
             $this->assertTrue(empty($this->errWriter->events));
         }
     }
-    
+
     /**
      * @group ZF-9870
      */
@@ -354,7 +357,7 @@ class Zend_Log_LogTest extends PHPUnit_Framework_TestCase
         $this->assertSame($logger, $logger->setTimestampFormat('Y-m-d H:i:s'));
         $this->assertEquals('Y-m-d H:i:s', $logger->getTimestampFormat());
     }
-    
+
     /**
      * @group ZF-9870
      */
@@ -367,4 +370,26 @@ class Zend_Log_LogTest extends PHPUnit_Framework_TestCase
         $message = stream_get_contents($this->log);
         $this->assertEquals(date('Y-m-d'), substr($message, 0, 10));
     }
+
+    /**
+     * @group ZF-9555
+     */
+    public function testExceptionConstructWriterFromConfig()
+    {
+        try {
+            $logger = new Zend_Log();
+            $writer = array('writerName' => 'NotExtendedWriterAbstract');
+            $logger->addWriter($writer);
+        } catch (Exception $e) {
+            $this->assertType('Zend_Log_Exception', $e);
+            $this->assertRegExp('#^(Zend_Log_Writer_NotExtendedWriterAbstract|The\sspecified\swriter)#', $e->getMessage());
+        }
+    }
+}
+
+class Zend_Log_Writer_NotExtendedWriterAbstract implements Zend_Log_FactoryInterface
+{
+    public static function factory($config)
+    {
+    }
 }