Laravel 10.40 - 包含数字钳位方法、APA 风格助手、Vite 资产路径定制等功能
发布于 作者: Paul Redmond
Laravel 团队发布了 v10.40 版本,其中包含数字钳位方法、APA 风格标题大小写字符串助手、Vite 资产路径定制等功能。距离 Laravel 11 发布不到一个月,社区正在全力以赴,每周都会提供新的功能、修复和改进。
以下是本周发布的一些新功能
添加数字钳位方法
James Brooks 贡献了一个 Number::clamp()
方法,该方法将给定数字钳位在两个数字之间。这提供了一种将给定数字限制在另外两个数字之间的方式。此方法可以通过一些示例进行最佳说明
Number::clamp(number: 53, min:0, max: 999); // 53Number::clamp(number: 0.5, min: 0, max: 1); // 0.5Number::clamp(number: 20, min: 0, max: 1); // 1Number::clamp(number: 10, min: 20, max: 30); // 20
添加 Session “except” 方法
Volodya Kurshudyan 贡献了一个 except()
方法,用于检索除指定项目数组外的所有会话数据
Schema Builder 是 Macroable 的
Kevin Bui 将 Macroable
特性添加到 schema builder 中,这使得开发人员可以为 schema builder 定义自定义方法。以下是一个拉取请求作者提供的示例
use Illuminate\Database\Schema\Builder; Builder::macro('hasForeignKey', function ($table, $key) { $foreignKeys = Schema::getForeignKeys($table); foreach ($foreignKeys as $foreignKey) { if ($foreignKey['name'] == $key) { return true; } } return false;});
测试空视图的断言
Dwight Watson 为 TestView
类贡献了一个 assertViewEmpty()
方法。现在你可以断言视图组件的输出是否为空,如下所示
$view = $this->view('welcome', ['name' => 'Example User', 'enabled' => false]); $view->assertViewEmpty();
为 Tailwind 分页添加暗模式支持
Sabin Chacko 为 simple-paginate.blade.php
和 tailwind.blade.php
文件贡献了暗模式支持。有关详细信息,请参见 Pull Request #49515。
允许 Vite 资产路径定制
Tim MacDonald 贡献了在更高级的情况下定制 Vite 资产路径的功能,在这些情况下,你无法依赖静态值来获取 app.asset_url
,可以使用服务提供者中的以下方法
Vite::createAssetPathsUsing(function ($path, $secure) { return //...});
使用 QueueFake 断言作业计数
Volodya Kurshudyan 为 QueueFake
贡献了一个 assertCount()
断言
use Illuminate\Support\Facades\Queue; Queue::fake();Queue::assertNothingPushed(); // ...act... Queue::assertCount(3);
APA 风格标题字符串助手
Adam Campbell 贡献了一个 APA 风格标题助手,该助手根据 APA 标题大小写 指南格式化字符串
Str::apa($string); str($string)->apa();
发行说明
你可以在下面看到新功能和更新的完整列表,以及 10.39.0 和 10.40.0 之间的差异,这些信息来自 GitHub。以下发行说明直接来自 变更日志
v10.40.0
- [10.x]
Model::preventAccessingMissingAttributes()
为枚举和原始可转换属性引发异常,这些属性未被 @cosmastech 在 https://github.com/laravel/framework/pull/49480 中检索 - [10.x] 包含 MariaDB 的系统版本控制表,由 @hafezdivandari 在 https://github.com/laravel/framework/pull/49509 中提供
- [10.x] 修复了
Arr::dot()
方法,使其正确处理索引数组,由 @kayw-geek 在 https://github.com/laravel/framework/pull/49507 中提供 - [10.x] 扩展 Gate::allows 和 Gate::denies 的签名,由 @antonkomarev 在 https://github.com/laravel/framework/pull/49503 中提供
- [10.x] 改善自定义转换的数字比较,由 @imahmood 在 https://github.com/laravel/framework/pull/49504 中提供
- [10.x] 添加会话 except 方法,由 @xurshudyan 在 https://github.com/laravel/framework/pull/49520 中提供
- [10.x] 添加
Number::clamp
,由 @jbrooksuk 在 https://github.com/laravel/framework/pull/49512 中提供 - [10.x] 修复 Schedule 测试,由 @michaelnabil230 在 https://github.com/laravel/framework/pull/49538 中提供
- [10.x] 使用正确的日期格式,由 @buismaarten 在 https://github.com/laravel/framework/pull/49541 中提供
- [10.x] 清理 Arr,由 @michaelnabil230 在 https://github.com/laravel/framework/pull/49530 中提供
- [10.x] 使 ComponentAttributeBag 可数组化,由 @iamgergo 在 https://github.com/laravel/framework/pull/49524 中提供
- [10.x] 修复 whenAggregated,当未指定默认值时,由 @lovePizza 在 https://github.com/laravel/framework/pull/49521 中提供
- [10.x] 更新 AsArrayObject.php 以使用 ARRAY_AS_PROPS 标志,由 @pintend 在 https://github.com/laravel/framework/pull/49534 中提供
- [10.x] 删除无效的
RedisCluster::client()
调用,由 @tillkruss 在 https://github.com/laravel/framework/pull/49560 中提供 - [10.x] 删除
PhpRedisConnector
中的未用代码,由 @tillkruss 在 https://github.com/laravel/framework/pull/49559 中提供 - [10.x] 在测试运行期间刷新 about 命令,由 @timacdonald 在 https://github.com/laravel/framework/pull/49557 中提供
- [10.x] 修复 parentOfParameter 方法,由 @iamgergo 在 https://github.com/laravel/framework/pull/49548 中提供
- [10.x] 使 Schema Builder 可宏化,由 @kevinb1989 在 https://github.com/laravel/framework/pull/49547 中提供
- [10.x] 删除测试中的未用代码,由 @imahmood 在 https://github.com/laravel/framework/pull/49566 中提供
- [10.x] 更新 Query/Builder.php 的 $columns 类型提示,由 @Grldk 在 https://github.com/laravel/framework/pull/49563 中提供
- [10.x] 将 assertViewEmpty 添加到 TestView 中,由 @dwightwatson 在 https://github.com/laravel/framework/pull/49558 中提供
- [10.x] 更新 tailwind.blade.php 以支持暗模式,由 @sabinchacko03 在 https://github.com/laravel/framework/pull/49515 中提供
- [10.x] 修复缓存 FileStore 中 null 值的弃用问题,由 @driesvints 在 https://github.com/laravel/framework/pull/49578 中提供
- [10.x] 允许 Vite 资产路径定制,由 @timacdonald 在 https://github.com/laravel/framework/pull/49437 中提供
- [10.x] 由 @lorenzolosa 在 https://github.com/laravel/framework/pull/49599 中为
Illuminate\Database\Query\Builder
的日期和时间相关的where*()
方法的第二个参数添加类型提示。 - [10.x] 由 @vaites 在 https://github.com/laravel/framework/pull/49590 中修复了
Stringable::convertCase()
的返回值类型。 - 允许在原生可迭代对象上调用
\Blade::stringable()
,由 @tsjason 在 https://github.com/laravel/framework/pull/49591 中实现。 - [10.x] 由 @xurshudyan 在 https://github.com/laravel/framework/pull/49601 中使用
InteractsWithTime
特征方法重构了时间处理。 - [10.x] 由 @xurshudyan 在 https://github.com/laravel/framework/pull/49609 中添加了
assertCount
测试助手。 - [10.x] 由 @deleugpn 在 https://github.com/laravel/framework/pull/49527 中实现了无需使用配置库即可建立连接的能力。
- [10.x] 由 @hotmeteor 在 https://github.com/laravel/framework/pull/49572 中添加了 APA 样式标题助手。
- [10.x] 由 @Mrjavaci 在 https://github.com/laravel/framework/pull/49614 中修复了错误输出中替代方案的使用方式。
- [10.x] 由 @crynobone 在 https://github.com/laravel/framework/pull/49561 中为 PlanetScale 的 MySQL 兼容的 Vitess 19 引擎使用锁来弹出队列作业。