查看 Laravel 5.8 令人兴奋的新功能

已发表: 2022-01-02

Laravel 是 Taylor Otwell 于 2011 年创建的杰出 PHP 框架,是所有 PHP 框架中最好的。 它易于访问、功能强大、健壮,并编织了一些惊人的应用程序。

这个 PHP 框架有助于开发人员实现抽象复杂功能的 MVC 模式。 更新势在必行,只是为了改善应用程序生命周期。

Laravel 大致每 5-6 个月发布一次更新,今年也是,Laravel 发布了 5.8 版本(19 年 3 月)并且无法使用。 您可以聘请 Laravel 开发人员尽早完成任务。

之前版本的不断改进为开发人员带来了一些令人兴奋的功能。 让我们先睹为快,看看这个新版本将提供的一些惊人功能

  • 自动策略解决
  • 碳 2.0 支持
  • 具有单通 Eloquent 关系
  • 令牌保护和散列
  • 缓存TTL
  • 调度器时区配置
  • Artisan:: 通话改进
  • 模拟/间谍测试辅助方法
  • 工匠服务改进
  • 高阶口才法
  • dotenv 3.0
  • 新的错误处理模板

自动策略解析:

早期的 Laravel 版本在非常规位置有模型或策略,必须在 AuthServiceProvider 类中注册。 在此版本中,模型和策略将存储在常规位置。

您不再需要手动注册模型的授权策略。 这个新版本将按照标准的 Laravel 命名约定自动发现策略。

如果要注册的策略位于其他位置,请使用以下命令注册回调

Gate::guessPolicyNamesUsing

您可以通过以下方式从 AuthServiceProvider 的booth 方法中调用此方法:

 使用 Illuminate\Support\Facades\Gate;
Gate::guessPolicyNamesUsing(function ($modelClass) {
// 返回策略类名...
});

碳 2.0 支持:

对开发人员来说是个好消息,现在您可以让您的应用程序默认使用 CarbonImmutable。

这个包扩展了 PHP 的日期和时间类,使日期和时间的工作变得非常容易。 类的选择取决于用户。

HasOneThrough Eloquent 关系:

这一新特性几乎与 Rails 提供的特性相似。 举个例子,假设我们有三个模型,供应商、账户和账户历史模型。 简单来说,一个供应商有一个账户,一个账户有一个账户历史。

在早期版本中,为了获取账户历史,我们是这样写的:$supplier->account->accountHistory。 但现在通过这种雄辩的关系,你会马上写

$history = $supplier->accountHistory

在整个帐户模型中。

 公共函数 accountHistory()
{
返回 $this->hasOneThrough(AccountHistory::class, Account::class);
}

令牌保护令牌散列:

借助令牌保护功能,您现在可以将 API 令牌保存为 SHA-256 哈希值。 早些时候,API 的令牌存储为纯文本令牌,现在已得到改进。 这增强了生成的令牌的安全性和存储。

缓存TTL:

从分钟的缓存设置现在已更改为秒。 完成此改进是为了更精确和更精细地控制过期时间。 该功能符合 PSR-16 缓存库标准。

此外,请记住始终将您的应用程序缓存更新为秒。

 // Laravel 5.7 - 将项目存储 5 分钟...
Cache::put('foo', 'bar', 10);

// Laravel 5.8 - 存储项目 5 秒...
Cache::put('foo', 'bar', 10);

调度程序时区配置:

这个新版本的 Laravel 允许您使用 timezone 方法为列出的任务自定义时区。

 $schedule->command('run')
->每日()
->at('15:00')
->timezone('美国/芝加哥');

这在早期版本中被认为是一项麻烦的任务,因为您必须为每个计划任务执行此操作。 但是有了这个,您现在只需在 app/Console/Kernel.php 文件中定义一个名为 ScheduleTimezone 的方法。

然后更改将附加到列表中的每个调度程序。

 /**
* 获取预定事件默认使用的时区。
*
* @return \DateTimeZone|string|null
*/
受保护的函数 scheduleTimezone()
{
返回“美国/芝加哥”;
}

工匠呼叫改进:

在这个新版本中,您可以使用 Artisan::call 方法制作 Artisan 命令。 现在可以将命令作为单个字符串中的数组传递,如下所示:

 Artisan::call('migrate:install --database=foo');

Artisan 服务改进:

以前的版本在 8000 中分配了默认端口,应用程序将在该端口上运行。 如果该端口上正在运行任何其他命令,它可能无法为新命令提供服务。

新版本将扫描高达 8009 的端口,允许开发人员同时运行多个应用程序。

模拟/间谍测试辅助方法:

模拟测试只会帮助开发人员使代码更清晰易读。 mock 和 spy 方法被添加到基础 Laravel 测试用例类中。 此方法将自动将要模拟的类与容器绑定。

 公共函数 testBasicTest()
{
$this->mock(TransactionService::class, function($mock){
$mock->shouldReceive('find')->once()->with(1)->andReturn(['id' => 1, 'name' => 'foo'])
});
}

高阶 orWhere 雄辩方法:

在之前的版本中,我们会在闭包回调中使用“或”来定义范围查询。 通过引入“高阶” orWhere 方法,您可以轻松地将这些范围查询链接在一起,而无需使用闭包。 例如:

 $users = App\User::emailVerified()->orWhere->active()->get();

dotenv 3.0:

为了管理项目的新 .env 文件,Laravel 5.8 将支持新的 dotenv 3.0。 这个新的 dotenv 3.0 支持多行字符串和字符串末尾的空格。 在需要多行 API 密钥以确保安全性的情况下,此功能将非常有用。

新的错误页面模板:

新的错误页面采用非常简约的设计,适用于各种网站和应用程序。 甚至可以自定义错误页面或导入之前设计的错误页面。

有很多 Laravel 开发公司进行应用程序开发。 这个新版本是一些惊人功能的宝库。 上面的内容列出了新的 Laravel 5.8 版本中的一些显着改进和扩展功能。

一些功能可以顺利集成到网站中,使其更加实用和用户友好。

要将正在运行的应用程序升级到Laravel 5.8 版,您可以查看官方网站上的升级指南和发行说明。