Laravel 9.42版本发布
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
相关文章