>  기사  >  PHP 프레임워크  >  라라벨 9.35가 출시되었습니다! 새로운 변화는 무엇인지 알아볼까요?

라라벨 9.35가 출시되었습니다! 새로운 변화는 무엇인지 알아볼까요?

藏色散人
藏色散人앞으로
2022-10-27 16:05:281440검색

다음 튜토리얼 칼럼인 Laravel에서는 Laravel 9.35 최신 버전의 변경 사항을 소개하겠습니다. 많은 분들께 도움이 되길 바랍니다!

Laravel 팀은 새롭고 흥미로운 대체 이메일 구문, Eloquent "엄격 모드" 기능 등을 갖춘 버전 9.35를 출시했습니다.

대체 이메일 구문

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;

    /**
     * 创建一个邮件实例
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * 获取邮件信封
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */
    public function envelope()
    {
        return new Envelope(
            subject: 'Invoice Paid',
            cc: [new Address('foo@example.com', 'Example Name')],
            tags: [],
            metadata: [],
        );
    }

    /**
     * 获取邮件内容定义
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    public function content()
    {
        return new Content(
            view: 'html-view-name',
            text: 'text-view-name',
        );
    }

    /**
     * 获取邮件的附件
     *
     * @return \Illuminate\Mail\Mailables\Attachment[]
     */
    public function attachments()
    {
        return [
            Attachment::fromPath('/path/to/file'),
        ];
    }
}

build()를 사용하여 이메일을 정의하는 전통적인 방법은 제거되지 않습니다. 위의 예에서 제가 좋아하는 점은 PHP 8의 명명된 매개변수를 사용하는 것이 훨씬 더 명확하다는 것입니다. build() 定义邮件的传统方式不会被删除。 我喜欢上面的例子是因为使用 PHP 8 的命名参数更一目了然。

Eloquent “严格”模式

Chris Morrell 和 Taylor Otwell 合作开发了 Eloquent 严格模式,该模式支持以下功能:

  • 没有延迟加载
  • 分配不可填充属性时的例外情况
  • 访问未检索或不存在的属性的异常

要在开发中使用严格模式,方法是将以下内容添加到已注册服务提供者的 boot() 方法中:

Model::shouldBeStrict();

shouldBeStrict() 方法是启用以下所有功能的快捷方式:

Model::preventLazyLoading();
Model::preventSilentlyDiscardingAttributes();
Model::preventsAccessingMissingAttributes();

使用资源路由加载废弃模型

Andrew Brown 提供了使用以下路由语法加载带有资源路由的废弃模型的能力:

// 所有终结点
Route::resource('users', UserController::class)->withTrashed();

// 仅`显示`
Route::resource('users', UserController::class)->withTrashed(['show']);

发行说明

你可以在GitHub上看到下面完整的新功能和更新列表以及[9.34.0]和9.35.0](github.com/laravel/framework/compa...) 之间的区别。以下发行说明直接来自 changelog:

v9.35.0

添加

  • 允许为资源路由加载废弃模型 (#44405)
  • 添加到 Illuminate/Database/Eloquent/Model::shouldBeStrict() 和其他 (#44283)
  • 没有解析控制器的控制器中间件 (#44516)
  • 选择可邮寄的语法 (#44462)

修复

  • 修复自引用多对多关系中的聚合函数(withSum 等)问题(#44286)
  • 修复了使用静态类属性作为模板属性的问题 (#44473)
  • Traversable 在 Enumerate Values 中应该优先于 JsonSerializable(#44456)
  • 修复了make:cast --inbound,所以它是一个布尔选项,而不是值 (#44505)

修改

  • 测试方法。 使用 json_encode 使错误消息更具可读性(#44397)
  • Model::without Timestamps()
  • Eloquent "엄격한" 모드
  • Chris Morrell과 Taylor Otwell은 다음 기능을 지원하는 Eloquent 엄격 모드를 공동 개발했습니다.
    • 지연 로딩 없음
    • 채울 수 없는 속성 할당 시 예외
    • 액세스가 검색되지 않음 또는 존재하지 않는 속성에 대한 예외
    • 개발 시 엄격 모드를 사용하려면 등록된 서비스 공급자의 boot() 메서드에 다음을 추가하세요.
    • rrreee
    • The shouldBeStrict() 메소드는 다음을 모두 활성화하는 지름길입니다:
    • rrreee
    리소스 경로를 사용하여 더 이상 사용되지 않는 모델 로드

    Andrew Brown은 다음 라우팅 구문을 사용하여 더 이상 사용되지 않는 모델을 리소스 경로와 함께 로드하는 기능을 제공합니다.

    rrreee릴리스 노트

    아래에서 새로운 기능과 업데이트의 전체 목록을 볼 수 있으며 GitHub의 [9.34.0]과 9.35.0](github.com/laravel/framework/compa...) 간의 차이점도 확인할 수 있습니다. 다음 릴리스 노트는 변경 로그에서 직접 가져온 것입니다.

    v9.35.0

    Added🎜
      🎜자원 라우팅을 위해 더 이상 사용되지 않는 모델을 로드하도록 허용합니다(#44405)🎜🎜Illuminate에 추가됨 /Database/Eloquent/Model ::shouldBeStrict() 및 기타(#44283) 🎜🎜컨트롤러 미들웨어가 컨트롤러를 구문 분석하지 않음(#44516) 🎜🎜메일로 보낼 수 있는 구문 선택(#44462) 🎜🎜🎜Fixed🎜
        🎜 자기 참조 다대다 관계에서 집계 함수(withSum 등) 문제를 수정했습니다(#44286)🎜🎜정적 클래스 속성을 템플릿 속성으로 사용하는 문제를 수정했습니다(#44473)🎜🎜Traversable이 우선해야 합니다. 값 열거의 JsonSerialize(# 44456) 🎜🎜 make:cast --inbound를 수정하여 값이 아닌 부울 옵션이 되도록 했습니다(#44505) 🎜🎜🎜수정 🎜
          🎜테스트 방법입니다. json_encode를 사용하여 오류 메시지를 더 읽기 쉽게 만듭니다(#44397) 🎜🎜Model::without Timestamps()가 콜백의 반환 값을 반환하도록 합니다(#44457). 🎜🎜관련 경로에서 더 이상 사용되지 않는 모델만 로드합니다( #44478)🎜🎜shouldBlockPhpUpload 함수에 추가 PHP 확장 추가(#44512)🎜🎜특히 시끄러운 객체에 대해 cutInternals 캐스터 등록(#44514)🎜🎜get 메소드를 사용하여 애플리케이션 로케일에 액세스(#44521)🎜🎜비어 있지 않은 응답만 반환 채널에서 (09d53ee, 3944a3e) 🎜🎜올바른 채널 일치 (#44531) 🎜🎜메일 구성 요소 마이그레이션 (#44527) 🎜🎜🎜🎜원본 주소: https://laravel-news.com/laravel-9 -35-0🎜 🎜번역 주소: https://learnku.com/laravel/t/72658🎜🎜

    위 내용은 라라벨 9.35가 출시되었습니다! 새로운 변화는 무엇인지 알아볼까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제