error handling
This commit is contained in:
parent
f5851ab797
commit
b9a900574d
2 changed files with 56 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
[Next step >>](2-http.md)
|
||||
[next >>](2-http.md)
|
||||
|
||||
### Setting up the front controller
|
||||
|
||||
|
@ -89,4 +89,4 @@ This will exclude the included file and folder from your commits. For which woul
|
|||
|
||||
Now you have successfully created an empty playground which you can use to set up your project.
|
||||
|
||||
[Next step >>](2-http.md)
|
||||
[next >>](2-http.md)
|
55
2-http.md
55
2-http.md
|
@ -1,3 +1,56 @@
|
|||
[<< Previous step](1-setup.md) [Next step >>](3-.md)
|
||||
[<< previous](1-setup.md) | [next >>](3-.md)
|
||||
|
||||
### Error handling
|
||||
|
||||
The first package for the project will be an error handler that will provide you with nice errors. A nice error page with a lot of information for debugging goes a long way during development.
|
||||
|
||||
I like [filp/whoops](https://github.com/filp/whoops) , so I will show how you can install that package for your project. If you prefer another package, feel free to install that one. This is the beauty of programming without a framework, you have total control over your project.
|
||||
|
||||
To install a new package, open up your `composer.json` and add the package to the require part. It should now look like this:
|
||||
|
||||
```
|
||||
"require": {
|
||||
"php": ">=5.5.0",
|
||||
"filp/whoops": "~1.0"
|
||||
},
|
||||
```
|
||||
|
||||
Now run `composer update` in your console and it will be installed.
|
||||
|
||||
But you can't use it yet. PHP won't know where to find the files for the classes. For this you will need an autoloader, ideally a [PSR-4](http://www.php-fig.org/psr/psr-4/) autoloader. Composer already takes care of this for you, so you only have to add a `require '../vendor/autoload.php';` to your `Bootstrap.php`.
|
||||
|
||||
Now before you start adding the error handler code to the
|
||||
|
||||
**Important:** Never show any errors in your production environment. A stack trace or even just a simple error message can help someone to gain access to your system. Always show a user friendly error page instead and send an email to yourself, write to a log or something similar. So only you can see the errors in the production environment.
|
||||
|
||||
For development that does not make sense though and you want a nice error page. So the solution is to have an environment switch in your code. For now you can just set it to `development`.
|
||||
|
||||
Then after the error handler registration, throw an Exception to test if everything is working correctly. Your `Bootstrap.php` should now look similar to this:
|
||||
|
||||
```
|
||||
<?php
|
||||
|
||||
namespace Example;
|
||||
|
||||
require '../vendor/autoload.php';
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$environment = 'development';
|
||||
|
||||
/**
|
||||
* Register the error handler
|
||||
*/
|
||||
$woops = new \Whoops\Run;
|
||||
if ($environment !== 'production') {
|
||||
$woops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
|
||||
} else {
|
||||
$woops->pushHandler(function($e){
|
||||
echo 'Friendly error page and send an email to the developer';
|
||||
});
|
||||
}
|
||||
$woops->register();
|
||||
|
||||
throw new \Exception;
|
||||
|
||||
```
|
Loading…
Reference in a new issue