File: BaseException.php

package info (click to toggle)
php-tokenreflection 1.3.1-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 596 kB
  • sloc: php: 7,803; xml: 102; makefile: 7
file content (102 lines) | stat: -rw-r--r-- 1,745 bytes parent folder | download | duplicates (2)
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
<?php
/**
 * PHP Token Reflection
 *
 * Version 1.3.1
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this library in the file LICENSE.
 *
 * @author Ondřej Nešpor
 * @author Jaroslav Hanslík
 */

namespace TokenReflection\Exception;

use RuntimeException;

/**
 * Base TokenReflection exception.
 */
abstract class BaseException extends RuntimeException
{
	/**
	 * The property/element does not exist.
	 *
	 * @var integer
	 */
	const DOES_NOT_EXIST = 1;

	/**
	 * An invalid argument was provided.
	 *
	 * @var integer
	 */
	const INVALID_ARGUMENT = 2;

	/**
	 * A required PHP extension is missing.
	 *
	 * @var integer
	 */
	const PHP_EXT_MISSING = 3;

	/**
	 * The requested feature is not supported.
	 *
	 * @var integer
	 */
	const UNSUPPORTED = 4;

	/**
	 * The reflected element already exists.
	 *
	 * @var integer
	 */
	const ALREADY_EXISTS = 5;

	/**
	 * Returns an exception description detail.
	 *
	 * @return string
	 */
	public abstract function getDetail();

	/**
	 * Returns an exception description as string.
	 *
	 * @return string
	 */
	final public function getOutput()
	{
		$detail = $this->getDetail();

		return sprintf(
			"exception '%s'%s in %s on line %d\n%s\nStack trace:\n%s",
			get_class($this),
			$this->getMessage() ? " with message '" . $this->getMessage() . "'" : '',
			$this->getFile(),
			$this->getLine(),
			empty($detail) ? '' : $detail . "\n",
			$this->getTraceAsString()
		);
	}

	/**
	 * Returns the exception details as string.
	 *
	 * @return string
	 */
	final public function __toString()
	{
		$output = '';

		if ($ex = $this->getPrevious()) {
			$output .= (string) $ex . "\n\nNext ";
		}

		return $output . $this->getOutput() . "\n";
	}
}