1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
<?php
namespace Slim\Handlers;
abstract class AbstractError extends AbstractHandler
{
protected $displayErrorDetails;
protected $outputBuffering;
public function __construct($displayErrorDetails = false, $outputBuffering = false)
{
$this->displayErrorDetails = (bool) $displayErrorDetails;
$this->outputBuffering = $outputBuffering;
}
protected function writeToErrorLog($throwable)
{
if ($this->displayErrorDetails) {
return;
}
$message = 'Slim Application Error:' . PHP_EOL;
$message .= $this->renderThrowableAsText($throwable);
while ($throwable = $throwable->getPrevious()) {
$message .= PHP_EOL . 'Previous error:' . PHP_EOL;
$message .= $this->renderThrowableAsText($throwable);
}
$message .= PHP_EOL . 'View in rendered output by enabling the "displayErrorDetails" setting.' . PHP_EOL;
$this->logError($message);
}
protected function renderThrowableAsText($throwable)
{
$text = sprintf('Type: %s' . PHP_EOL, get_class($throwable));
if ($code = $throwable->getCode()) {
$text .= sprintf('Code: %s' . PHP_EOL, $code);
}
if ($message = $throwable->getMessage()) {
$text .= sprintf('Message: %s' . PHP_EOL, htmlentities($message));
}
if ($file = $throwable->getFile()) {
$text .= sprintf('File: %s' . PHP_EOL, $file);
}
if ($line = $throwable->getLine()) {
$text .= sprintf('Line: %s' . PHP_EOL, $line);
}
if ($trace = $throwable->getTraceAsString()) {
$text .= sprintf('Trace: %s', $trace);
}
return $text;
}
protected function logError($message)
{
error_log($message);
}
}