<?php
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
$namespace = 'ajf\ErrorExceptions\Dynamic';
$className = preg_replace('/[^a-zA-Z0-9]/', '', preg_replace('/\:.*$/', '', implode('', explode(' ', ucwords($errstr)))));
$fullClassName = $namespace . '\\' . $className;
if (!class_exists($fullClassName)) {
eval("namespace $namespace { class $className extends \ErrorException {} }");
}
throw new $fullClassName($errstr, 0, $errno, $errfile, $errline);
});
try {
$foo = 1/0;
} catch (ajf\ErrorExceptions\Dynamic\DivisionByZero $e) {
echo "ba-da-bing, ba-da-boom: I caught a $e!\n";
}
try {
$repent = sin("123abc");
} catch (ajf\ErrorExceptions\Dynamic\ANonWellFormedNumericValueEncountered $e) {
echo "praise be to zend_is_numeric_string_ex: $e";
}
try {
$empty = [];
$void = $empty["soul"];
} catch (ajf\ErrorExceptions\Dynamic\UndefinedOffset $e) {
echo "not even the colon can defeat me: $e";
}
preferences:
51.45 ms | 402 KiB | 5 Q