Decoding Laravel 5.5 : report()August 05, 2017
Taylor Otwell – founder of Laravel recently announced about the new helper function
report() that is going to be available from Laravel 5.5. This function helps you to report the exception without stopping the request. And Today, I’m going to explain how this function works under the hood. Lets get started.
New "report" helper in 5.5. Use it a lot in my stuff. Report exceptions using exception handler "report" method without stopping request. ✌️ pic.twitter.com/mkyLpmxROE
— Taylor Otwell (@taylorotwell) 3 August 2017
I'm running Laravel 5.5 dev version with fresh database and tables migrated. Now, we will create a sample route like the following.
Here, since I have not seeded my tables, this is going to throw
ModelNotFoundException. Under catch block we are going to report it to Laravel by calling
report() method. This will in return call
report() method on
App\Exception\Handlers.php class where we will write our logic for handling this exception.
In order to understand how this works, we have to go report function definition.
Introducting Laravel Report
report() is defined on
Here, report calls the
Illuminate\Contracts\Debug\ExceptionHandler contract class. Now, since this is just a contract, we have to figure out the class that is binded with this contract. Lets open the
app.php file under
On app.php you can find that
Illuminate\Contracts\Debug\ExceptionHandler is binded with
App\Exceptions\Handler.php. This way when report() helper function calls
app(ExceptionHandler::class), it will return
App\Exceptions\Handler class and from there
report() is called.
This is how the new laravel report function works!