New Features in Laravel 9: What’s New in the Latest Major Release

9 Minutes to read

Table Of Content

Introduction

Laravel is a PHP web application framework with expressive, elegant syntax. It is a web application development framework for implementing simple to complex web applications using the PHP programming language. Laravel, created by Taylor Otwell, has a bunch of advanced features such as built-in authentication and authorization support. Flexible, scalable, and adaptable, it provides the ability to create web applications of every size. The Laravel framework strictly follows the MVC (Model-View-Controller) architectural pattern. Laravel is often praised for its slick and elegant syntax. Laravel has become one of the most popular PHP frameworks in recent years for building custom and robust web applications.

Laravel has been a leading PHP framework for a long time. The system is scalable, flexible, and adaptable, which makes it a popular choice for engineers and companies who work with PHP. Now, Laravel 9 is on its way, with a number of new features. Therefore we have written this article for you to understand it, but if you still have any doubt about it then you should choose a Laravel Development Company as they will simplify it for you. With Laravel, you can develop endeavor review web applications, custom apps, and robust applications without much hassle.

Laravel always strives to improve advancements; therefore, they contribute to new releases with new functions, features, advancements, etc. The framework has gone through several updates. It has now become the preferred PHP system for building web applications because of its features and functionality.

Compared to existing frameworks such as CodeIgniter, Laravel became more popular after its first beta release in 2011. It was back then when many programmers became highly-skilled Laravel developers! Let’s get acquainted with all Laravel versions to date in order to gain a deeper understanding of the framework. Laravel 9 comes with many new features that can be used in many different ways. Improvements to Laravel Scout, including the accessor/mutator API, better Enum casting support, and forced scope bindings.

Laravel has been around for a long time now, as have other PHP frameworks. A new version of Laravel is on the way, and it will offer a number of new features. Since Laravel is focused on making advancements smoother and faster, they continuously look for new releases with new functionalities, features, and advancements. Laravel has gone through several updates. Features and functionalities have developed so well that it has become the PHP system of choice for web application development.

From the releases support policy documentation, here’s what you can expect going forward with tentative dates of upcoming releases:

VersionPHP (*)ReleaseBug Fixes UntilSecurity Fixes Until
6 (LTS)7.2 -8.0September 3rd, 2019January 25th, 2022September 6th, 2022
77.2 -8.0March 3rd, 2020October 6th, 2020March 3rd, 2021
87.3 – 8.1September 8th, 2020July 26th, 2022January 24th, 2023
9 (LTS)8.0 – 8.1February 8th, 2022February 8th, 2024February 8th, 2025
108.0 – 8.1February 7th, 2023August 7th, 2024February 7th, 2025

Laravel 9 is the next long-term support version (LTS) that will receive bug fixes until February 2024 and security fixes until February 2025. Here are some of the major features that we’ve covered in detail and let’s have a look at what is coming to the Laravel 9 post :

What’s New in Laravel 9 ?

  • New Design for routes:list
  • PHP 8 is Laravel 9’s minimum version
  • New test –coverage option displays coverage directly in the terminal
  • Anonymous Stub Migrations are now the default
  • New Query Builder Interface
  • PHP 8 String Functions
  • Symfony Mailer has replaced SwiftMailer as the mailer functionality
  • Flysystem 3.x
  • Improved Eloquent Accessors/Mutators
  • Implicit Route Bindings With Enums (PHP 8.1)
  • Controller Route Groups
  • Enum Eloquent Attribute Casting
  • Forced Scoped Bindings
  • Laravel Breeze API & Next.js
  • Laravel Scout Database Engine
  • Full-Text Indexes / Where Clauses
  • Rendering Inline Blade Templates
  • Soketi Echo Server
  • Optional Bootstrap 5 Pagination Views
  • Improved Ignition Exception Page
  • New str() and to_route() helper functions

Features of Laravel 9

1. Controller Route Groups

Laravel 9 lets us define common routes as controller group routes, making route definition more readable and easy. Let’s see how it looks 

use App\Http\Controllers\PostController;
Router controller (Post Controllers.class)->group(function() {
Route::get("/posts/(sd)', 'show'); Route: Epost('/posts', 'store');
>}

2. Minimum PHP Requirement

A number of other prerequisites will be specified within the future with regards to Laravel 9. You will need PHP 8, PHPUnit 9, as well as other prerequisites. The Laravel framework depends on several community-driven and Symfony 9 libraries. Due to Symfony’s plan to release v6.0 by November 2021, Laravel had to delay the release of version 9. Laravel 9 is dependent solely on Symfony’s latest v6.0 release, which is dependent upon PHP 8. PHP version benchmarks enable you to visualize the advancements and features of PHP 8 from the Just-In-Time compiler (JIT) to constructor property promotion.

3. Anonymous Migration Classes

Laravel sets to introduce anonymous stub migration as a default behavior when you execute the popular migration command:

1. php artisan make:migration

The anonymous stub migration feature was first introduced in Laravel 8.37 to solve the Github issue. Multiple migrations in the same class name can cause issues when attempting to recreate the entire database. Stub migrations resolve this issue.

When you execute the popular migration command in Laravel, anonymous stub migration is the default behavior:

php artisan make:migration add_users_nick_name --table=users

The stub migration feature eliminates migration class name collisions. For example, the migration class looks like the following:

<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
/*
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('nick name')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
/*
public function down()
{ Schema::table('users', function (Blueprint $table) {
$table->dropColumn('nick_name');
});
}
};

4. New Helper Functions

In Laravel 9, type hinting will become more reliable for refactoring, static analysis, and code completion. There are no shared interfaces/inheritances between Query/Builder, Eloquent/Builder, and Eloquent/Relation. In addition, Laravel 9 will help developers use a new query builder interface for type hints, refactoring, and static analysis.

5. Refreshed Ignition Error Page

Designed for Laravel projects, Ignition provides a beautifully designed, customizable error page. Laravel’s error page has been redesigned by the Ignition team. The team can suggest solutions and provide documentation to solve common issues. The best part? Everything can be automatically fixed with a single click.

Laravel versions 6 and up include ignition pre-installed. Ignition can be installed with Composer in older versions (5.5+). All Laravel specific debug information is nicely presented when you have to dive deep. If you still need help, you can share your errors publicly.

6. Render a Blade String

This next addition isn’t something you reach for too often, but it’s there when you need it. A Blade-formatted string can now be rendered to HTML via a method call.

Blade, Laravel’s templating engine, is a powerful and beautiful tool. However, the blade engine will only compile templates that are written to a file (as far as I know). Generally, this is not a significant limitation, but you may need to compile a string one day.

7. Forced Scope Bindings

Laravel 9 allows you to force scope bindings in route declarations with a simple method call. Hopefully, this adds a bit more clarity and intent.

8. Test Coverage with XDebug

 Laravel recently added a PHP Artisan test command to trigger the suite. The functionality of this tool has now been extended to include generating code coverage reports.

9. Laravel Scout Database Engine

Algolia was originally the focus of Laravel Scout. However, over the course of time, a variety of alternatives have been developed. You may use the new database engine in Laravel 9 for small to medium-sized applications.

10. Full Text Indexing

Laravel 9 also includes full-text indexing for MySQL and PostgreSQL. New migrations will include a fulltext() method and a whereFulltext()  method on your Eloquent builder.

11. Enum Attribute Casting

Eloquent attribute casting to and from enums is now included in Laravel 9, because PHP 8 provides native support for enums.

12. Simplified Accessors & Mutators

Laravel’s getXAttribute and setXAttribute API for declaring accessors and mutators will remain unchanged, but a simplified approach will be recommended going forward.

13. PHP 8 String Functions

Because Laravel 9 targets PHP 8, Laravel merged this PR, suggesting using the new string functions in PHP 8. The class /Illuminate/Support/Str uses functions str_contains(), str_starts_with(), and str_ends_with().

14. New Query Builder Interface

In its IDE, Laravel 9 has type hinting support for refactoring, static analysis, and code completion. Query/Builder, Eloquent/Builder, and Eloquent/Relation do not share an interface or inheritance. With Laravel 9, developers will still be able to take advantage of the new query builder interface for type hinting, refactoring, and static analysis.

<?php
return Model::query()
->whereNotExists(function($query) {
// $query is a Query\Builder
}}
->whereHas('relation', function($query) {
// $query is an Eloquent\Builder }}
->with('relation', function($query) {
// $query is an Eloquent\Relation
});

15. Bootstrap 5 Pagination Views

The framework makes it easy to deal with pagination in your projects if you have ever encountered it. The automatic pagination in Laravel eliminates the need for manual pagination.

Laravel 9.0, however, makes this process even easier. Jared Lewis contributed the Bootstrap 5 pagination views. For its pagination view, Laravel 9 will use Bootstrap 5. It should be called in the boot method of your App\Providers\AppServiceProvider class.

16. Checked/Selected Blade Directives

Ashley Allen and Taylor Otwell contributed, checked, and selected Blade directives. In the older version, we had to specify a specific condition for selecting the checkbox and dropdown.

Laravel’s version 9 addresses this issue by adding @checked and @selected blade components for selecting data, and it will only select data if a specific condition is met.

@checked:- it will echo checked if the provided condition is true.

17. Improved route: list CLI Output

Laravel is also notable for its command-line interface (CLI). With Laravel, you can create or modify anything without having to browse folders and files. Command-line interfaces allow you to interact with databases as well.

With version 9 it even got better, as the new version introduces a new design of route list in the command line interface.

Why Move From Laravel 8 to 9?

Flysystem 2.0

Laravel 9. x has migrated from Flysystem 1. x to 2. x. Flysystem is responsible for all the record manipulation strategies provided by Capacity. You may need to make some changes to your application as a result. In any case, we have attempted to create this move as consistent as conceivable.

Symfony Mailer

With Laravel 9. x, SwiftMailer, which won’t be maintained after December 2021, is being replaced by Symfony Mailer. It was nevertheless Laravel’s goal to make this move as consistent as possible for your applications. As a result, it would be ideal if you reviewed all of the changes on the following list in order to ensure your application is fully compliant.

Custom Casts & null

The set strategy of custom cast classes was not invoked in previous releases of Laravel if the cast attribute was set to null. Laravel documentation contradicted this behavior. In Laravel 9. x, null is used as the $value argument in the set strategy of the casting course. Hence, you ought to guarantee your custom casts are able to adequately handle this situation.

Default HTTP Client Timeout

HTTP clients now include a default timeout of 30 seconds. If the server does not respond within 30 seconds, an exception will be thrown. Currently, the HTTP client does not have a default timeout length, leading to requests sometimes “hanging” indefinitely. If you wish to specify a longer timeout for a given request, you may do so using the timeout method:

$response = Http::timeout(120)->get(...);

The lang Directory

As of Laravel 9. x applications, the resources/lang directory is located within the root project directory (lang). In order to publish language files in this directory, you should use the app()->langPath() rather than a hard-coded path.

The Password Rule

We have renamed the password rule to current_password, which verifies that the input value matches the confirmed user’s current password. The when / unless Methods As you may know, when and unless methods are offered by various classes throughout the framework. By using these methods, you can perform an action conditionally based on the value of the first argument:

$collection->when(true, function ($collection) {
$collection->merge([1, 2, 3]);
});

Since a comparison against a closure object is always true, passing a closure to the when or unless methods of Laravel implied that the conditional operation would always execute. As a result, startling results are often realized since engineers expect that the closure value will be used as a boolean value that determines if the conditional action is executed. So, in Laravel 9. x, if a closure is passed to the when or unless methods, the closure’s output will be used as a boolean value.

How to Install the Latest Laravel 9.0?

Laravel 9 can be installed and tested locally for development and testing purposes. This framework is compatible with PHP 8 only. Therefore, check your PHP version before installing and testing. Remove the previous version and start a new installation to make things easier.

Execute the Following Commands to Deploy Laravel 9 Utilizing Composer

The Laravel Global CLI can also be used to create a new Laravel project. Then, build a new project from the developer branch.

After you’ve finished installing Laravel 9, go to the new directory (laravel-dev) and evaluate the current version with the artisan command.

cd laravel-9-dev
php artisan --version

Wrapping Up!

This PHP framework is gaining more and more attention among developers. Laravel 9 is the first to follow a 12-month release cycle, and we can already experience its “juicy” new features. The Laravel team is likely to announce new features and updates in the future. So make sure to bookmark this post as we’ll cover them in future updates.

It is Laravel 9’s Creator’s goal to provide the best solution to their users, and they strive to do so by releasing updated versions every year. However, it took two years for Laravel 9 to be released. You will be able to easily develop web apps with this new version of Laravel 9. You can hire Laravel developers from us to leverage our top-of-the-line Laravel app development services if you’re looking to upgrade your application from Laravel 8 to Laravel 9.

Let’s hear from you now! What do you most look forward to with Laravel 9? Let us know in the comments section! Also, be sure to learn more about Laravel vs Symfony and Top 10 Laravel Development Companies in India to choose the best Laravel development company for your web development project.

Jigar Shah
Shah
Jigar Shah is the Founder of WPWeb Infotech - a leading Web Development Company in India, USA. Being the founder of the company, he takes care of business development activities and handles the execution of the projects. He is Enthusiastic about producing quality content on challenging technical subjects.

1 comment

  1. author_image
    Alvin Moore

    Laravel 9 is the best and latest version to use in web application development, and it has significantly improved the common errors that used to occur in previous versions.
    You put a great effort to compile this one, Thanks!

Leave a comment

By continuing to use this website you agree to our a Cookie Policy.

Copy link