Passed
Push — master ( 4d56eb...4e3915 )
by Ryuichi
29:10 queued 27:26
created

SystemException::__construct()   A

Complexity

Conditions 5
Paths 12

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 5

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 5
eloc 12
c 2
b 0
f 0
nc 12
nop 3
dl 0
loc 20
ccs 13
cts 13
cp 1
crap 5
rs 9.5555
1
<?php
2
3
namespace WebStream\Exception;
4
5
/**
6
 * SystemException
7
 * @author Ryuichi TANAKA.
8
 * @since 2014/05/05
9
 * @version 0.4
10
 */
11
class SystemException extends \RuntimeException
12
{
13
    /**
14
     * @var string エラーメッセージ
15
     */
16
    private $errorMessage;
17
18
    /**
19
     * constructor
20
     * @param string $message エラーメッセージ
21
     * @param int $code ステータスコード
22
     * @param \Exception $exception 例外オブジェクト
23
     */
24 2
    public function __construct(string $message, int $code = 500, \Exception $exception = null)
25
    {
26 2
        parent::__construct($message, $code);
27
28 2
        if ($exception === null) {
29 2
            $exception = $this;
30
        }
31
32 2
        if (!empty($message)) {
33 2
            $message .= " ";
34
        }
35
36 2
        $this->errorMessage = get_class($exception) . " is thrown: " . $message . $exception->getFile() . "(" . $exception->getLine() . ")";
37 2
        $stacktraceList = explode("#", $exception->getTraceAsString());
38 2
        foreach ($stacktraceList as $stacktraceLine) {
39 2
            if ($stacktraceLine === "") {
40 2
                continue;
41
            }
42 2
            $this->errorMessage .= PHP_EOL;
43 2
            $this->errorMessage .= "\t#" . trim($stacktraceLine);
44
        }
45
    }
46
47
    /**
48
     * エラーメッセージを返却する
49
     * @return string エラーメッセージ
50
     */
51 5
    public function getExceptionAsString(): string
52
    {
53 5
        return $this->errorMessage;
54
    }
55
}
56