統計
| ブランチ: | リビジョン:

pictcode_admin / lib / Cake / Console / ConsoleErrorHandler.php @ 5ad38a95

履歴 | 表示 | アノテート | ダウンロード (2.823 KB)

1
<?php
2
/**
3
 * ErrorHandler for Console Shells
4
 *
5
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice.
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://cakephp.org CakePHP(tm) Project
14
 * @since         CakePHP(tm) v 2.0
15
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
16
 */
17

    
18
App::uses('ErrorHandler', 'Error');
19
App::uses('ConsoleOutput', 'Console');
20
App::uses('CakeLog', 'Log');
21

    
22
/**
23
 * Error Handler for Cake console. Does simple printing of the
24
 * exception that occurred and the stack trace of the error.
25
 *
26
 * @package       Cake.Console
27
 */
28
class ConsoleErrorHandler {
29

    
30
/**
31
 * Standard error stream.
32
 *
33
 * @var ConsoleOutput
34
 */
35
        public static $stderr;
36

    
37
/**
38
 * Get the stderr object for the console error handling.
39
 *
40
 * @return ConsoleOutput
41
 */
42
        public static function getStderr() {
43
                if (empty(static::$stderr)) {
44
                        static::$stderr = new ConsoleOutput('php://stderr');
45
                }
46
                return static::$stderr;
47
        }
48

    
49
/**
50
 * Handle an exception in the console environment. Prints a message to stderr.
51
 *
52
 * @param Exception $exception The exception to handle
53
 * @return void
54
 */
55
        public function handleException(Exception $exception) {
56
                $stderr = static::getStderr();
57
                $stderr->write(__d('cake_console', "<error>Error:</error> %s\n%s",
58
                        $exception->getMessage(),
59
                        $exception->getTraceAsString()
60
                ));
61
                $code = $exception->getCode();
62
                $code = ($code && is_int($code)) ? $code : 1;
63
                return $this->_stop($code);
64
        }
65

    
66
/**
67
 * Handle errors in the console environment. Writes errors to stderr,
68
 * and logs messages if Configure::read('debug') is 0.
69
 *
70
 * @param int $code Error code
71
 * @param string $description Description of the error.
72
 * @param string $file The file the error occurred in.
73
 * @param int $line The line the error occurred on.
74
 * @param array $context The backtrace of the error.
75
 * @return void
76
 */
77
        public function handleError($code, $description, $file = null, $line = null, $context = null) {
78
                if (error_reporting() === 0) {
79
                        return;
80
                }
81
                $stderr = static::getStderr();
82
                list($name, $log) = ErrorHandler::mapErrorCode($code);
83
                $message = __d('cake_console', '%s in [%s, line %s]', $description, $file, $line);
84
                $stderr->write(__d('cake_console', "<error>%s Error:</error> %s\n", $name, $message));
85

    
86
                if (!Configure::read('debug')) {
87
                        CakeLog::write($log, $message);
88
                }
89

    
90
                if ($log === LOG_ERR) {
91
                        return $this->_stop(1);
92
                }
93
        }
94

    
95
/**
96
 * Wrapper for exit(), used for testing.
97
 *
98
 * @param int $code The exit code.
99
 * @return void
100
 */
101
        protected function _stop($code = 0) {
102
                exit($code);
103
        }
104

    
105
}