Add Whoops as error handler
This commit is contained in:
parent
032d8ff101
commit
e516e6cbdf
4 changed files with 152 additions and 7 deletions
|
@ -9,6 +9,7 @@
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.2",
|
"php": "^7.2",
|
||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
|
"filp/whoops": "^2.6",
|
||||||
"php-di/php-di": "^6.0",
|
"php-di/php-di": "^6.0",
|
||||||
"twig/twig": "^3.0"
|
"twig/twig": "^3.0"
|
||||||
},
|
},
|
||||||
|
|
110
composer.lock
generated
110
composer.lock
generated
|
@ -4,8 +4,69 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "7da10fc34e3c55211c7a134e7e79f040",
|
"content-hash": "8dc6d12612bce2ab7a927687ee0aeca5",
|
||||||
"packages": [
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "filp/whoops",
|
||||||
|
"version": "2.6.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/filp/whoops.git",
|
||||||
|
"reference": "ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/filp/whoops/zipball/ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508",
|
||||||
|
"reference": "ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.5.9 || ^7.0",
|
||||||
|
"psr/log": "^1.0.1"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"mockery/mockery": "^0.9 || ^1.0",
|
||||||
|
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0",
|
||||||
|
"symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"symfony/var-dumper": "Pretty print complex values better with var-dumper available",
|
||||||
|
"whoops/soap": "Formats errors as SOAP responses"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.5-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Whoops\\": "src/Whoops/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Filipe Dobreira",
|
||||||
|
"homepage": "https://github.com/filp",
|
||||||
|
"role": "Developer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "php error handling for cool kids",
|
||||||
|
"homepage": "https://filp.github.io/whoops/",
|
||||||
|
"keywords": [
|
||||||
|
"error",
|
||||||
|
"exception",
|
||||||
|
"handling",
|
||||||
|
"library",
|
||||||
|
"throwable",
|
||||||
|
"whoops"
|
||||||
|
],
|
||||||
|
"time": "2019-12-25T10:00:00+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "jeremeamia/superclosure",
|
"name": "jeremeamia/superclosure",
|
||||||
"version": "2.4.0",
|
"version": "2.4.0",
|
||||||
|
@ -308,6 +369,53 @@
|
||||||
],
|
],
|
||||||
"time": "2017-02-14T16:28:37+00:00"
|
"time": "2017-02-14T16:28:37+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "1.1.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801",
|
||||||
|
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.1.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "Psr/Log/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"time": "2019-11-01T11:05:21+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.13.1",
|
"version": "v1.13.1",
|
||||||
|
|
|
@ -2,18 +2,53 @@
|
||||||
|
|
||||||
namespace Runtime\Exceptions;
|
namespace Runtime\Exceptions;
|
||||||
|
|
||||||
|
use Whoops\Handler\JsonResponseHandler;
|
||||||
|
use Whoops\Handler\PlainTextHandler;
|
||||||
|
use Whoops\Run;
|
||||||
|
use Whoops\Handler\PrettyPageHandler;
|
||||||
|
use Whoops\Util\Misc;
|
||||||
|
|
||||||
class ExceptionHandler {
|
class ExceptionHandler {
|
||||||
|
|
||||||
public static function make($abstract = null)
|
/**
|
||||||
|
* @var Run
|
||||||
|
*/
|
||||||
|
private static $handler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param null $abstract
|
||||||
|
* @param null $message
|
||||||
|
*/
|
||||||
|
public static function make($abstract = null, $message = null)
|
||||||
{
|
{
|
||||||
if(is_object($abstract) && $abstract instanceof \Exception) {
|
if(is_string($abstract)) {
|
||||||
echo $abstract->getMessage();
|
$abstract = new $abstract($message);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_subclass_of($abstract, 'Exception')) {
|
||||||
|
self::$handler->handleException($abstract);
|
||||||
|
}
|
||||||
|
|
||||||
die();
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
echo 'Error: ' . $abstract;
|
/**
|
||||||
|
* Register Whoops (Error handler)
|
||||||
|
*/
|
||||||
|
public static function register()
|
||||||
|
{
|
||||||
|
self::$handler = new Run();
|
||||||
|
self::$handler->pushHandler(new PrettyPageHandler());
|
||||||
|
|
||||||
die();
|
if (Misc::isAjaxRequest()){
|
||||||
|
self::$handler->pushHandler(new JsonResponseHandler());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Misc::isCommandLine()){
|
||||||
|
self::$handler->pushHandler(new PlainTextHandler());
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$handler->register();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ class BootstrapFactory {
|
||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
ExceptionHandler::register();
|
||||||
Route::setDefaultNamespace('\App\Http\Controllers');
|
Route::setDefaultNamespace('\App\Http\Controllers');
|
||||||
|
|
||||||
require_once('../routes/web.php');
|
require_once('../routes/web.php');
|
||||||
|
@ -65,7 +66,7 @@ class BootstrapFactory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExceptionHandler::make(ClassNotFoundException::class);
|
ExceptionHandler::make(ClassNotFoundException::class, sprintf("Class '%s' not found", $abstract));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue