In the beginning of this year, we wrote about the release of Laravel 5.4 and all the new features, which came with it. Yesterday marked the release of, by his own admission, Laravel creator’s favorite version – Laravel 5.5:
This is the next major release since 5.1 and it will receive bug fixes for the next two years and security fixes for the next three. The new version requires PHP 7+, which in itself is sure to decrease CPU consumption and speed up performance up to twice. Make sure you use PHP 7 on your hosting account before installing the new version or upgrading. If you are already using Laravel 5.4, upgrading to 5.5 should be easy as you are already using PHP 7. So…
What is new in Laravel 5.5?
Responsable Interface
This new simple interface will help you structure big controller files by converting objects returned from controllers with actions or routes with closures into HTTP responses. This happens by implementing a toResponse()
method. Before sending the response, the route class checks for this method and sends it accordingly. This also allows you to provide a layer with additional functionality by adding transitional code to the response. You can check the commit on GitHub and read detailed examples from the Laravel post.
Dump and “Dump and die” Methods in Collections
That new feature will make debugging faster and easier. Instead of assigning a variable to a particular connection and then dumping it whenever changing the collection, now you can now call both methods on a collection directly. When you debug a collection and want to check each transformation in the chain, you can set dump()
to output the result and continue the process or dd()
to dump and stop the whole process.
You can start using these methods thanks to Collection Macros – a 3rd party package, developed by the Belgian agency Spatie.
Data Return from the Validator
On Laravel 5.5 you can create an object directly from the validated data. You have to make sure to define all the fields as otherwise any attribute not it the validate method will not have a value. To be sure, simply pass the object with all its attributes through the validation method even if they do not require validation. You can see examples on the Laravel website.
Blade::if() Directives
You can now exclude repetitive checks from your blade templates to optimize structure and readability. This is done through the via the boot method in the AppServiceProvider class. You also have the option to make your checks more dynamic by passing arguments with Blade::if()
. For more information, watch the official Laracast tutorial.
Mailables rendering and themes
On Laravel 5.5 you can display HTML emails in the browser directly from a route. The Mailable class now implements a render()
method from the Renderable contract. This will help you see what your emails look like before actually sending them and edit the browser view right away.
Laravel 5.5 comes with another update in the Mailable class – selecting which email theme to use. You could design your own branded theme for emails in Laravel 5.4, but now you can easily deploy it as well.
Front End Presets
Previous Laravel versions had Bootstrap and Vue installed by default to help with the front end. Now, if you do not want to use them, you can remove those front end interfaces with command php artisan preset none
. Also now you can use the React Preset by typing command php artisan preset react
. You can see details and examples in the official Laravel post.
Migrate:fresh
Until now, Laravel had only the option to rebuild the database by rolling back and rerunning all your migrations via command migrate:refresh
. Laravel 5.5 introduces command migrate:fresh
which drops all the tables, then runs the existing migrations again.
What has changed in Laravel 5.5?
Whoops is back!
Whoops is a PHP error handles, which used to come with Laravel 4, but was removed on 5. Now, Whoops is back in the picture to make debugging much easier. Every time there is an error, Whoops displays the line of code, which caused it as a screenshot, together with the error message.
Provider Prompt for vendor:publish
In Laravel 5.5 running command vendor:publish without a flag will require you to choose a provider so that you only publish what you want. To avoid this prompt, you can use either the --all
or --provider
flag.
Custom Exceptions report method
The handling of exceptions in older Laravel versions was made by writing a code in the report method of the App\Exceptions\Handler class. However, in the event of multiple exceptions, this could make your application messy and hard to read. In the newest version, you can create a report()
method inside the exception itself, specifying how it should be handled.
Other improvements in the new LTS Laravel version include better design of the error pages, easier creating and updating of pivot models, custom validator rules, and more. For a full list and descriptions of the new stuff in Laravel 5.5, visit their news website. You can also check out the video introducing the new features:
The new Laravel 5.5 is fully supported on all WebHostFace packages. For more information about our services, contact us via our 24/7 live chat!
Laravel 5.5 is stable and has exceptional features that you already mentioned on this post. One of the important and new features of Laravel 5.5 TrustedProxy. It is Setting a trusted proxy allows for correct URL generation, redirecting, session handling and logging in Laravel when behind a proxy. This is useful if your web servers sit behind a load balancer, HTTP cache, or another intermediary (reverse) proxy.
Thank you for a great input! The feature was introduced a little after this post was published, but I completely agree that it is a very useful and convenient addition.