Laravel 9.35版本发布

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

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

相关文章