Laravel 9新功能:深入探讨即将发布的主要版本

Laravel 9新功能:深入探讨即将发布的主要版本

Laravel多年来一直是最流行的PHP框架之一。它优雅、可扩展,已成为开发人员和使用PHP的公司的事实上的框架之一。现在,Laravel 9即将推出大量新功能。

过去,新版本每六个月发布一次,导致对Laravel的新发布过程提出了相当多的问题、严厉的评论和混乱。随着Laravel 9的发布,该框架已进入12个月的主要发布周期,并将于2022年1月发布。

本文探讨了Laravel 9的主要功能。最重要的是,我们还将详细介绍如何升级到Laravel 9并开始开发Web应用程序。

  1. 什么是Laravel?
  2. Laravel的主要特性
  3. 对Laravel 9有何期待
  4. Laravel 9的新特性
  5. 如何安装Laravel 9

什么是 Laravel?

Laravel是一个开源的PHP Web应用程序框架,以其优雅的语法而闻名。它是一个MVC框架,用于使用PHP编程语言构建简单到复杂的Web应用程序,它严格遵循MVC(模型-视图-控制器)架构模式。

如果您还没有使用过Laravel,您可以阅读Laravel与django的对比文章以深入了解,并查看我们基于Laravel开发实时评论系统的教程以开始使用。

Laravel的主要特性

如果你是这个框架的新手,我们精选了一些最好的Laravel特性来让你更好地理解。

Laravel功能

Laravel功能(图片来源:Moon Technolabs

Eloquent ORM

Laravel的对象关系映射器 (ORM) 称为Eloquent,它是Laravel的最佳功能之一,因为它允许与所选的数据模型和数据库进行无缝交互。

使用Eloquent,Laravel抽象了涉及交互和编写复杂SQL查询以访问数据库数据的所有障碍。

Artisan CLI

Artisan CLI或命令行是Laravel的另一个重要方面。有了它,您可以从命令行创建或修改Laravel的任何部分,而无需浏览文件夹和文件。

借助Artisan,您甚至可以使用Laravel Tinker从命令行直接与数据库交互——所有这些都无需安装数据库客户端。

MVC架构

Laravel的MVC架构特性使该语言具有相关性和适应性,因为它遵循流行的Web开发模式,并不断进行重大改进。

Laravel将迫使您学习和理解MVC架构模式,该模式在几乎所有框架中都很流行和使用,例如来自JavaScript的AdonisJS和来自C#的ASP.NET MVC。

自动分页

如果您曾经为应用程序中的分页而苦恼,您就会明白通过内置框架整理分页的价值。

Laravel通过构建开箱即用的自动分页来解决分页麻烦。此功能是其最受认可的功能之一,它消除了自己解决分页之谜所涉及的工作。

安全

仔细检查您正在考虑使用的任何Web应用程序的安全措施至关重要,因为缺乏尽职调查可能会导致资金损失,甚至您的网站或产品被劫持。

由于Laravel遵守OWASP安全原则,因此提供了许多安全措施。从跨站点请求伪造 (CSRF) 到SQL注入,Laravel都有一个内置的解决方案。

对Laravel 9有何期待

Laravel 9计划于2021年9月发布,已被推迟到2022年1月,使其成为第一个在12个月发布周期后推出的长期支持 (LTS) 版本。造成这种延迟的原因有很多,包括但不限于以下几点:

  1. Laravel 使用各种社区驱动的项目和大约九个Symfony库。然而,Symfony计划在2021年11月之前发布6.0版本。延迟将使Laravel团队能够将这个新版本的Symfony作为Laravel 9的一部分。
  2. 延迟将使团队有时间监控Laravel如何与新版本的Symfony交互两个月。它还为他们提供了纠正任何重大更改或错误的空间。
  3. 最后,推迟Laravel 9的发布可以更好地为Laravel团队定位,以应对未来每年的发布。在Symfony发布后,这将为团队提供两个月的额外提升时间。

由于这些原因,您可以看到其发布的延迟值得等待。

Laravel 9的新特性

现在,让我们探索在即将到来的 Laravel 主要版本中你应该期待的特性和改进列表。

最低PHP要求

首先也是最重要的是,Laravel 9需要最新的PHP 8和PHPUnit 8进行测试。这是因为Laravel 9将使用最新的Symfony v6.0,它也需要PHP 8。

匿名存根迁移

当您运行流行的迁移命令时,Laravel将匿名存根迁移设置为默认行为:

php artisan make:migration

匿名存根迁移功能最初是在Laravel 8.37中发布的,用于解决Github的这个问题。问题是尝试从头开始重新创建数据库时,具有相同类名的多个迁移可能会导致问题。新的存根迁移功能消除了迁移类名称冲突。

从Laravel 8.37开始,该框架现在支持匿名类迁移文件,而在Laravel 9中,它将成为默认行为。

<?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('people', function (Blueprint $table)
        {
            $table->string('first_name')->nullable();
        });
    }
};

新的查询生成器界面

在新的Laravel 9中,类型提示对于IDE中的重构、静态分析和代码完成非常可靠。这是由于Query\Builder、Eloquent\Builder 和 Eloquent\Relation之间缺乏共享接口或继承尽管如此,使用Laravel 9,开发人员现在可以享受用于类型提示、重构和静态分析的新查询构建器界面。

<?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
	});

 

此版本添加了新的Illuminate\Contracts\Database\QueryBuilder interface, 以及Illuminate\Database\Eloquent\Concerns\DecoratesQueryBuilder将实现接口代替__call魔法方法的特性。

PHP 8字符串函数

由于Laravel 9针对PHP 8,Laravel合并了这个PR,建议使用最新的PHP 8字符串函数。

这些功能包括使用的 str_contains()str_starts_with()以及str_ends_with()在内部\Illuminate\Support\Str类。

上面列出的Laravel 9的功能和改进是对即将发生的事情的先睹为快。它肯定会带来许多错误修复、功能,当然还有许多重大更改。

如何安装Laravel 9

如果您想开始使用Laravel 9进行开发和测试,您可以轻松地在本地机器上安装和运行它。

Laravel 9支持PHP 8,因此如果您打算测试它,请务必检查您的PHP版本或启动全新安装。

您可以通过Packagist发现有关该版本的更多详细信息。

要使用composer安装Laravel 9,请运行以下命令:

composer create-project --prefer-dist laravel/laravel laravel-9-dev dev-develop

上面的命令将laravel-9-dev使用最新的Laravel 9创建一个名为 的新Laravel项目,正如我们所知,它仍在开发中(因此dev-develop)。

第二种方法是使用Laravel全局CLI创建一个新的Laravel项目,并选择从dev分支创建你的新项目。

输入以下命令创建一个新的Laravel 9项目:

laravel new laravel-9-dev --dev

现在你已经安装了Laravel 9,你可以进入新目录(laravel-dev)并执行artisan命令来检查版本:

cd laravel-9-dev
php artisan --version

它应该向您展示Laravel 9的开发版本。瞧!

小结

Laravel是一个引人注目的PHP框架,在开发人员中越来越受到关注。它即将发布的主要版本(Laravel 9)是12个月发布周期之后的第一个版本,我们已经可以看到它将引入“多汁”的新功能。

这是新功能的完整列表吗?可能不会,因为 Laravel 团队可能会在发布日期之前宣布新功能。因此,请务必将此帖子加入书签,因为我们将在未来的更新中介绍它们。

评论留言