paint-brush
Laravel 8 Features That You Should Knowby@devansh_khetrapal
317 reads
317 reads

Laravel 8 Features That You Should Know

by Devansh KhetrapalMay 18th, 2021
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Laravel 8 was released on September 8th. It is the latest version of the popular web-development tool that allows developers to use it. It also has a built-in tool called Artisan that helps you create the most complex models. The new version of Laravel is available to download and use for the first time in the wild. There are many new features in the new version, including a new web-based model and an easy-to-use tool that can be used to create a new database.

People Mentioned

Mention Thumbnail

Company Mentioned

Mention Thumbnail
featured image - Laravel 8 Features That You Should Know
Devansh Khetrapal HackerNoon profile picture

It’s been a while (Sept 8th 2020, specifically) since Laravel 8 was finally released, but I believe that its features need to be brought to light again since Laravel has always stood out when it comes to web development. It is the most popular framework of PHP, which itself is one of the pioneer programming languages.

With almost 64.6k stars and counting, Laravel is also one of the most trending repositories on GitHub. It gained more popularity after the release of features like Artisan (Command Line Interface), support for the database system, migrations, and bundles.

Some of the popular websites are built with Laravel, including BBC, OnePlus, 9GAG, and so many more. It’s suitable for developing all kinds of web applications ranging from startups to enterprise level.

With a lot of built-in functionalities that allow developers to work with ease, Laravel also comes with official packages that opens up so many possibilities. Before we talk about what was introduced in Laravel 8, let’s look at what it’s already capable of.

What Makes Laravel Special Already?

Template Engine

Laravel is highly recognized for its built-in lightweight templates that can be used to create amazing layouts using dynamic content seeding. On top of that, it provides multiple widgets using the CSS and Javascript code with robust structures. Laravel templates are especially designed so that you can create simplest to the most complex layouts with distinctive sections.

MVC Architecture Support

With Laravel, you get support for MVC architecture pattern which makes sure that business logic and presentation layers are separate. Being able to split roles in your project, isolate responsibility, MVC pattern of Laravel has a lot of such built-in functions that helps improve application performance and increases security as well as scalability.

Eloquent ORM (Object Relational Mapping)

There are several reasons why you should use Laravel, one of which is its articulate Object Relational Mapping (ORM) system that consists of a simple PHP Active Record implementation. This allows web app developers to write database queries with PHP syntax rather than writing SQL code. An ORM is significantly faster than other PHP frameworks.

Security

Laravel offers strong web application security. It uses hashed and salted password mechanisms because of which the password would never be saved as a plain text in the database. It also uses the “Bcrypt Hashing Function” to generate an encrypted password. Additionally, it uses prepared SQL statements that prevent SQL injection attacks.

Artisan

Laravel provides a built-in command-line tool called Artisan that helps you automate the majority of monotonous programming tasks. These Artisans can be used to create the database structure, a skeleton code, and manage migration so it is a pretty easy-to-manage database system. In addition, Artisan even helps Laravel developers to create their own commands and use them as required.

Libraries & Modular

Laravel arrives with pre-installed Object-Oriented and Modular libraries that are not available in many other PHP frameworks. For instance, the Authentication library with features such as checking active users, password reset, Bcrypt hashing, CSRF (Cross-site Request Forgery) protection, and encryption. 

New Features in Laravel 8

Laravel 8 was the latest version of the Laravel framework, that was released on September 8th. It comes with some amazing new features and even has a guide to upgrade. Taylor Otwell, the creator of Laravel, announced some of those new features in his LARACON presentation. 

Here’s a summary of some of the new capabilities announced of the app. Let’s take a look at some of those great new features:-

app/Models Directory

Laravel 8 will now arrive with an

app/models
directory, instead of leaving model class in the root
app
directory as in previous versions of Laravel. According to a poll run by Taylor, over 80% of developers were creating an
app/models
directory themselves anyway.

If you use any of the artisan generator commands, maybe like a

php artisan make:model
that can create a model class for you, it will create a new model for you inside the new
app/models
directory. 

However, if you wish to keep your models in your

app
directory and delete the new models directory, the generator commands will comply with that and create the model classes in your app directory.

New landing page

The page you see when you visit the homepage on a fresh install has had a renovation. It is now built with TailwindCSS and also comes in light/dark versions. It has links to several community sites and various SaaS products from Laravel as well. If you’d like to get your hands on some new merch, there is a link to the new Laravel shop there as well.

Controllers namespace prefix removed

In the earlier versions of Laravel, there was a property in the RouteServiceProvider.php called

$namespace
which was used to prefix the namespace of your controllers automatically (applying
App\Http\Controllers
). 

If you were using the callable syntax in your

web.php
routes file, Laravel would've double prefixed your namespaces. Fortunately, this property has been removed from Laravel 8, so you can now import your controller classes in your routes file without issue.

Route caching improvements

Hopefully, you were using the route caching in your application already (running

php artisan route:cache
generates a PHP file with an array that contains all your routes, which then Laravel uses for routing because it's faster than having to parse your routes file(s) on every request).

Up until now, however, if you had any closures in your routes, or even if a package registered a route with a closure, it would have caused the route caching to fail. With Laravel 8, you get support for route caching for closure based routes! 

Blade component attributes

If you were to extend a Blade component (e.g. having a component called DangerButton, that extended another component called Button) in Laravel 7, the child button wouldn't have had the

$attributes
passed down to it. In Laravel 8, all child components will have the
$attributes
available, which makes it easier to build extended components.

Cleaner syntax for closure based event listeners

In previous Laravel versions, while registering a closure based event listener, you would’ve had to first define the event class, then register the closure, and probably type hint the event class for the closure e.g.:

In Laravel 8, you can skip the first definition of the event class since the framework is able to infer it from the type hinted argument - e.g.:

Queueable anonymous event listeners

In Laravel 8, you will be able to send a closure based job to the queue from your model event callbacks e.g.:

In previous Laravel versions, it wasn’t possible to make this happen until you created an event class and event listener, using the ShouldQueue trait. This new feature makes the process quicker and actually introduces the first namespaced function into the Laravel framework,

Illuminate\Events\queueable
.

Maintenance mode: secret access

If you use the

artisan down
/
artisan up
commands to put your site into maintenance mode but still want to give access to some people (maybe yourself, other developers, etc), the only way this is possible is via IP whitelisting. 

It wouldn’t work well if you were to grant access to lots of people, or if you have a dynamic IP address that regularly changes. That changes with Laravel 8! You will now able to use a "secret" flag when you put your site into maintenance mode - e.g:

The value of the secret flag becomes a route while your site is in maintenance mode. If you were to then navigate to that, the framework will set a cookie that instructs your app to ignore the maintenance mode when you access it. It lasts for several hours and redirects you to the homepage of your app, which you can then browse as a normal website.

Exponential backoff for job failures

You can now add a new backoff() method to your job classes which returns an array of integers to decide the acceptable wait time between job attempts if it fails - e.g:

In the above example, if the job failed on its first attempt, it would wait 1 second before trying again. If the job fails again, it would wait 5 seconds before attempting again. Similarly, it’ll wait for 10 seconds before attempting again. This could come in handy when you're working with a rate limited API to increase the wait each time the job fails.

Wrapping Up

There are several more features that Taylor and the team have certainly been busy with. Even though it’s been a while since the version launched, it’s important to shed some light on the core features of Laravel 8. 

You can watch Taylor's talk or something similar in the Web Development Industry to keep yourself updated with what’s going on. If any of this is too technical for you to understand, you can always hire a Laravel Developer to help you build a web app.