Laravel 9.35版本发布
Laravel团队发布了2022年10月12日9.35,其中包含令人兴奋的新替代邮寄语法、Eloquent 的“严格模式”功能等等。
>本周 Laravel 发布的酷炫新事物。首先,您现在可以快速启用 Eloquent “严格模式”:
没有延迟加载
分配不可填充属性时的
异常访问未检索或不存在的属性的异常https://t.co/RwGeYJ1P8j
— Taylor otwell (@taylorotwell) 2022年10月11日
备用可邮寄语法
Taylor Otwell通过返回“指定可邮寄内容和属性的细长值对象”为作品贡献了另一种可邮寄语法
这是他的拉取请求描述中的一个示例:
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class InvoicePaid extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the message envelope.
*
* @return \Illuminate\Mail\Mailables\Envelope
*/
public function envelope()
{
return new Envelope(
subject: 'Invoice Paid',
cc: [new Address('[email protected]', 'Example Name')],
tags: [],
metadata: [],
);
}
/**
* Get the message content definition.
*
* @return \Illuminate\Mail\Mailables\Content
*/
public function content()
{
return new Content(
view: 'html-view-name',
text: 'text-view-name',
);
}
/**
* Get the attachments for the message.
*
* @return \Illuminate\Mail\Mailables\Attachment[]
*/
public function attachments()
{
return [
Attachment::fromPath('/path/to/file'),
];
}
}
build()不会删除使用定义可邮寄的传统方式。
我喜欢上面的例子是如何使用 PHP 8 的命名参数显而易见的。
Eloquent “严格”模式
Chris Morrell和Taylor Otwell合作开发了 Eloquent 严格模式,该模式支持以下功能:
没有延迟加载
分配不可填充属性时的异常
访问未检索或不存在的属性的异常
理想情况下,您将通过将以下内容添加到boot()已注册服务提供者的方法中来在开发中使用严格模式:
Model::shouldBeStrict();
shouldBeStrict() 方法是启用以下所有功能的快捷方式:
Model::preventLazyLoading();
Model::preventSilentlyDiscardingAttributes();
Model::preventsAccessingMissingAttributes();
使用资源路由加载废弃模型
Andrew Brown贡献了使用以下路由语法加载带有资源路由的垃圾模型的能力:
// All endpoints
Route::resource('users', UserController::class)->withTrashed();
// Only `show`
Route::resource('users', UserController::class)->withTrashed(['show']);
发行说明
您可以在下面查看新功能和更新的完整列表,以及GitHub 上9.34.0 和 9.35.0之间的差异。
以下发行说明直接来自变更日志:
https://github.com/laravel/framework/compare/v9.34.0...v9.35.0
https://github.com/laravel/framework/blob/31091a54085101f743960c9ca013058028e6ea35/CHANGELOG.md#v9350---2022-10-11
v9.35.0
添加
允许为资源路由加载废弃模型 ( #44405 )
添加Illuminate/Database/Eloquent/Model::shouldBeStrict()和其他 ( #44283 )
不解析控制器的控制器中间件 ( #44516 )
替代可邮寄语法 ( #44462 )
修复
修复自引用多对多关系中枢轴列的聚合(withSum 等)问题(#44286)
修复了使用静态类属性作为刀片属性的问题 ( #44473 )
Traversable 应该优先于 EnumerateValues 中的 JsonSerializable ( #44456 )
已修复make:cast --inbound,因此它是一个布尔选项,而不是值 ( #44505 )
改变
测试方法。使用 json_encode 使错误消息更具可读性 ( #44397 )
让 'Model::withoutTimestamps()' 返回回调的返回值 ( #44457 )
仅在相关路线上加载废弃模型 ( #44478 )
为 shouldBlockPhpUpload 函数添加额外的 PHP 扩展 ( #44512 )
为特别嘈杂的物体注册 cutInternals 脚轮(#44514)
使用 get 方法访问应用程序语言环境 ( #44521 )
仅返回来自频道的非空响应(09d53ee,3944a3e)
正确的频道匹配 ( #44531 )
迁移邮件组件 ( #44527 )
转:
https://laravel-news.com/laravel-9-35-0
相关文章