<?php
if (!function_exists('interface_exists')) {
die('PHP version too old');
}
$throwables = listThrowableClasses();
$throwablesPerParent = splitInParents($throwables);
printTree($throwablesPerParent);
if (count($throwablesPerParent) !== 0) {
die('ERROR!!!');
}
function listThrowableClasses()
{
$result = [];
if (interface_exists('Throwable')) {
foreach (get_declared_classes() as $cn) {
$implements = class_implements($cn);
if (isset($implements['Throwable'])) {
$result[] = $cn;
}
}
} else {
foreach (get_declared_classes() as $cn) {
if ($cn === 'Exception' || is_subclass_of($cn, 'Exception')) {
$result[] = $cn;
}
}
}
return $result;
}
function splitInParents($classes)
{
$result = [];
foreach ($classes as $cn) {
$parent = (string) get_parent_class($cn);
if (isset($result[$parent])) {
$result[$parent][] = $cn;
} else {
$result[$parent] = [$cn];
}
}
return $result;
}
function printTree(&$tree)
{
if (!isset($tree[''])) {
die('No root classes!!!');
}
printLeaves($tree, '', 0);
}
function printLeaves(&$tree, $parent, $level)
{
if (isset($tree[$parent])) {
$leaves = $tree[$parent];
unset($tree[$parent]);
natcasesort($leaves);
$leaves = array_values($leaves);
$count = count($leaves);
for ($i = 0; $i < $count; ++$i) {
$leaf = $leaves[$i];
echo str_repeat(' ', $level), $leaf, "\n";
printLeaves($tree, $leaf, $level + 1);
}
}
}
- Output for 8.4.1
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
DateError
DateObjectError
DateRangeError
FiberError
Random\RandomError
Random\BrokenRandomEngineError
TypeError
ArgumentCountError
UnhandledMatchError
ValueError
Exception
ClosedGeneratorException
DateException
DateInvalidOperationException
DateInvalidTimeZoneException
DateMalformedIntervalStringException
DateMalformedPeriodStringException
DateMalformedStringException
DOMException
dom\domexception
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
Random\RandomException
ReflectionException
RequestParseBodyException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
SQLite3Exception
- Output for 8.3.0 - 8.3.14
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
DateError
DateObjectError
DateRangeError
FiberError
Random\RandomError
Random\BrokenRandomEngineError
TypeError
ArgumentCountError
UnhandledMatchError
ValueError
Exception
ClosedGeneratorException
DateException
DateInvalidOperationException
DateInvalidTimeZoneException
DateMalformedIntervalStringException
DateMalformedPeriodStringException
DateMalformedStringException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
Random\RandomException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
SQLite3Exception
- Output for 8.2.0 - 8.2.26
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
FiberError
Random\RandomError
Random\BrokenRandomEngineError
TypeError
ArgumentCountError
UnhandledMatchError
ValueError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
Random\RandomException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
- Output for 8.1.0 - 8.1.30
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
FiberError
TypeError
ArgumentCountError
UnhandledMatchError
ValueError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
- Output for 8.0.0 - 8.0.30
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
TypeError
ArgumentCountError
UnhandledMatchError
ValueError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
- Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
- Error
ArithmeticError
DivisionByZeroError
AssertionError
CompileError
ParseError
TypeError
ArgumentCountError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
JsonException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
- Output for 7.2.0 - 7.2.34
- Error
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
ArgumentCountError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
SodiumException
- Output for 7.1.0 - 7.1.33
- Error
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
ArgumentCountError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
- Output for 7.0.0 - 7.0.33
- Error
ArithmeticError
DivisionByZeroError
AssertionError
ParseError
TypeError
Exception
ClosedGeneratorException
DOMException
ErrorException
IntlException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
- Output for 5.6.0 - 5.6.40
- Exception
DOMException
ErrorException
IntlException
LogicException
BadFunctionCallException
BadMethodCallException
DomainException
InvalidArgumentException
LengthException
OutOfRangeException
PharException
ReflectionException
RuntimeException
OutOfBoundsException
OverflowException
PDOException
RangeException
UnderflowException
UnexpectedValueException
preferences:
88.39 ms | 426 KiB | 5 Q