领先的 PHP Web 应用程序框架 Laravel 刚刚发布了 11.30 版本,其中包含令人兴奋的新功能和改进,可提高开发人员的工作效率和代码灵活性。 让我们来探索一下关键更新。
使用新助手简化测试:withDefer()
和 withoutDefer()
Laravel 11.30 引入了 withDefer()
和 withoutDefer()
,由 Tim MacDonald 提供。在使用延迟调用测试代码时,这些非常宝贵,允许您有选择地禁用延迟以实现精确的断言控制。
使用 withoutDefer()
的说明性示例:
<code class="language-php">// This won't work correctly User::create(/* ... */); $this->assertAgainstSomeDeferredOutcome(); // This works as intended $this->withoutDefer(); User::create(/* ... */); $this->assertAgainstSomeDeferredOutcome();</code>
这种对测试期间延迟操作的增强控制可以带来更可靠、更准确的测试结果。
具有 HasUniqueStringIds
特征的自定义唯一字符串 ID
Luke Kuzmish 的贡献,即 HasUniqueStringIds
特性,使开发人员能够利用自定义的唯一字符串 ID 作为路由键,而无需修改 resolveRouteBindingQuery()
。 这扩展了现有的 HasUuids
和 HasUlid
特征,提供了更大的 ID 生成灵活性。
实现自定义唯一字符串 ID:
<code class="language-php">trait HasTwrnsTrait { use HasUniqueStringIds; public function newUniqueId() { return (string) Twrn::new(); } protected function isValidKey($value): bool { return Twrn::isValid($value); } }</code>
此功能允许高度定制的模型标识符,同时与标准 Laravel 实践无缝集成。
通过直接枚举支持增强授权
Johan van Helden 对 AuthorizesRequests
特性的更新现在直接接受支持的枚举,与 Laravel 最近在整个框架范围内拥抱枚举相一致。
通过 authorize()
方法使用枚举:
<code class="language-php">enum DashboardPermission: string { case VIEW = 'dashboard.view'; } // Previously public function index(): Response { $this->authorize(DashboardPermission::VIEW->value); // ... } // Now public function index(): Response { $this->authorize(DashboardPermission::VIEW); // ... }</code>
这种简化提高了授权代码的类型安全性和可读性。
其他重大增强
版本 11.30 还包括:
Blade::directive
参数扩展了 $bind
功能。trans_choice()
分隔符的翻译替换的 |
问题。exists()
代替count()
进行性能优化。PostTooLargeException
的错误消息传递。failed_jobs_uuid_unique
的完整性约束违规。Laravel 11.30 强调了该框架致力于持续改进和开发人员体验。 通过精细的测试、灵活的模型 ID 和简化的基于 Enum 的授权,此版本为开发人员提供了强大的新工具,用于编写更清晰、更高效的代码。 Laravel 仍然是 PHP 开发人员构建健壮且功能丰富的 Web 应用程序的首选。
准备好利用 Laravel 来提升您的业务了吗? 今天就联系我们。
以上是Laravel 在测试、模型 ID 和授权方面的飞跃的详细内容。更多信息请关注PHP中文网其他相关文章!