查看 Laravel 5.8 令人兴奋的新功能
已发表: 2022-01-02Laravel 是 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 版,您可以查看官方网站上的升级指南和发行说明。
