Laravel 9.42版本发布

2023-06-01 00:00:00 laravel 版本 发布

Laravel团队本周发布了9.42版本,增加了单子路由资源,条件报告助手等。

> 感谢@jessarchercodes,今天的Laravel版本允许你快速定义 "单子 "资源的路由。
 这些资源就像一个用户的 "档案",在你的应用程序中只有一个实例。
 
 阅读更多文档: https://t.co/IyAvu0eYWz pic.twitter.com/WSD4vgSiBY
 - Taylor Otwell(@taylorotwell)2022年11月29日


为单子资源定义路由

Jess Archer贡献了一个Route::singleton()方法来为单子资源注册路由。

这些资源是 "一对一 "或 "零对一 "的资源。

例如,一个配置文件端点:

Route::singleton('profile', ProfileController::class);
/*
Defines:
GET       /profile
GET       /profile/edit
PUT/PATCH /profile
DELETE    /profile
*/
 
// Nested resource
Route::singleton('videos.thumbnail', VideoThumbnailController::class);
 
/*
Defines:
GET       /videos/{video}/thumbnail
GET       /videos/{video}/thumbnail/edit
PUT/PATCH /videos/{video}/thumbnail
DELETE    /videos/{video}/thumbnail
*/
 
// Only and except
Route::singleton('profile', ProfileController::class)
     ->except('destroy');
 
Route::singleton('profile', ProfileController::class)
     ->only(['show', 'update']);

make:controller命令也被更新,加入了--singleton和--creatable标志,以生成单子控制器。

请查看单子资源控制器文档,

https://laravel.com/docs/9.x/controllers#singleton-resource-controllers

了解更多的例子和细节。干得好,Jess!


为queue:listen增加了一个rest选项

@PHPGuus为queue:listen命令贡献了一个--rest=选项,它将在传递给rest的秒数内睡眠:

php artisan queue:listen --rest=5


确定一个字符串是否是ULID

Michael Nabil为Stringable类贡献了一个isUlid()方法,用来检查一个字符串是否是一个有效的通用唯一词表可分类标识符(ULID)字符串。

你可以按以下方式使用它:

use Illuminate\Support\Str;
 
Str::isUlid('01GJSNW9MAF792C0XYY8RX6QFT'); // true
Str::of('01GJSNW9MAF792C0XYY8RX6QFT')->isUlid(); // true


条件性报告帮助器

Michael Nabil 贡献了两个新的条件性报告()帮助器。

这些可能对缩短检查很有用,你可以在条件为真或假时报告:

// Normal report usage
if(! Auth::user()->isAdmin()){
    report('Is route need permission user');
}
 
// Shorten/avoid `if` with:
report_if(
    Auth::user()->isAdmin(),
    'Is route need permission admin'
);
 
report_unless(
    Auth::user()->isAdmin(),
    'Is route need permission user'
);

这些助手是可选的,你可以自由地使用它们或不使用它们 :)


预定事件的自定义mutex名称

Andrej Mihaliak贡献了一个回调,以解决预定事件的自定义mutex名称:

$schedule->command('do-something', ['--uuid' => 'b4d5f926-e1b5-4285-b068-cf1d623a0635'])
    ->description('Do something important.')
    ->everyFiveMinutes()
    ->onOneServer()
    ->withoutOverlapping()
    ->createMutexNameUsing(fn (Event $event) => 'schedule-task-'.sha1($event->description));

请查看Pull Request #45126以了解完整的细节。

https://github.com/laravel/framework/pull/45126


发布说明

你可以在GitHub上看到以下完整的新功能和更新列表以及9.41.0和9.42.0之间的差异。

下面的发行说明直接来自更新日志:

https://github.com/laravel/framework/compare/v9.41.0...v9.42.0
https://github.com/laravel/framework/blob/926cf9686c28ea6424990e2bd36dd607695eb104/CHANGELOG.md#v9420---2022-11-29


v9.42.0

已添加

为 queue:listen 增加了 --rest 选项 (00a12e2, 82fde9e)
添加 Illuminate/Support/Stringable::isUlid() (#45100)
添加新闻 report_if 和 report_unless 助手函数 (#45093)
添加回调以解决日程事件的自定义mutex名称(#45126)
为WorkerStopping事件添加WorkOptions (#45120)
为Illuminate/Routing/Console/ControllerMakeCommand添加单子和可创建选项(#44872)。

已修复

修复纯枚举的验证(#45121)
防止带有$touches属性的关系的测试问题(#45118)
修复工厂在试图确定关系是否为空时的故障(#45135)。

已更改

允许通过AsCommand属性设置命令描述(#45117)
更新了Mailable以防止重复的收件人(#45119)


转:

https://laravel-news.com/laravel-9-42-0

相关文章