릴리즈 노트
ㅋㅋ ~ |
- PSR-16 캐시 사양
- 다중 방송 인증 가드
- Token Guard 토큰 해싱 알고리즘
- 개선된 이메일 유효성 검사기
- 기본 예약 작업 시간대
- 중간 테이블/피벗 모델 이벤트
- Artisan 호출 개선
- 모의/스파이 테스트 도우미 방법
- Eloquent 리소스 키 지속성
- Higher-order orWhere Eloquent 메소드
- Artis an Serve 개선
- 템플릿 파일 매핑
- DynamoDB 캐시/세션 드라이버
- Carbon 2.0 지원
- Pheanstalk 4.0 지원
릴리스 노트
- 버전 제어 체계
- 지원 전략
- Laravel 5.8
버전 제어 체계
Laravel의 버전 제어 체계는 다음 규칙을 사용합니다:
주 버전 번호.부 버전 번호.개정 번호
. 부 버전 프레임워크는 6개월마다(2월과 8월) 출시되는 반면, 주요 변경 사항이 포함된 개정 버전은 매주 출시될 수 있습니다.主版本号.次版本号.修订号
。次版本号框架每六个月(二月和八月)发布,而修订号版本可能每周发布一次,修订号版本 不 包含重大更改。当你从应用程序中或者在包中引用 Laravel 框架或者其他组件时,应该始终使用版本约束,例如
애플리케이션이나 패키지 내에서 Laravel 프레임워크나 기타 구성 요소를 참조할 때는 항상5.7.*
5.7.*
와 같은 버전 제약 조건을 사용해야 합니다. Laravel의 부 버전에는 주요 변경 사항이 포함되어 있기 때문입니다. 하지만 우리는 하루 안에 업데이트할 수 있도록 열심히 노력할 것입니다. 주요 버전 간의 릴리스는 대개 수년이 걸리며, 각 릴리스는 프레임워크 아키텍처와 기본 구조의 근본적인 변화를 나타냅니다. 현재 주요 버전 번호를 개발할 계획은 없습니다. 지원 정책5.5 등 LTS 버전의 경우 버그 수정 2년, 보안 수정 3년이 제공됩니다. 이러한 버전은 가장 긴 시간의 지원 및 유지 관리를 제공합니다. 일반 버전의 경우 6개월의 버그 수정과 1년의 보안 수정만 제공됩니다.버전 릴리스 시간 버그 수정 기한 보안 수정 기한 5.0 2015년 2월 4일 8월 2일 015 2015년 6월 9일 © 2017년 6월 9일 © 2018년 6월 9일 © 5.2 2015년 12월 21일 2016년 6월 21일 2016년 12월 21일 5.3 2016년 8월 23일 5.4 2017년 1월 24일 2017년 7월 24일 2018년 1월 24일 5.5 (LTS) 2017년 8월 30일 2019년 8월 30일 2020년 8월 30일 5.6 2018년 2월 7일 2019년 9월 4일2018년 8월 7일 2019년 2월 7일 5.7 2018년 9월 4일 9년 3월 4일 2020년 2월 26일5.8 2019년 2월 26일 2019년 8월 26일 Laravel 5.8
Laravel 5.8은 새로운 Eloquent 관계(has-one-through) 도입, 최적화된 이메일 확인, 규칙 기반 권한 부여 정책 클래스 자동 등록, DynamoDB 캐싱 및 세션 드라이버, 작업 스케줄러의 시간대 구성 최적화, 브로드캐스트 채널에 여러 인증 가드 할당 지원, PSR-16 캐시 드라이버 사양,
artisan Serve
명령 최적화, PHPUnit 8.0 지원, Carbon 2.0 지원, Pheanstalk 4.0을 지원하고 여러 버그 수정 및 유용성 개선을 지원합니다.artisan serve
命令、支持 PHPUnit 8.0、支持 Carbon 2.0 、支持 Pheanstalk 4.0 ,以及多个 bug 修复和可用性的提升。Eloquent
HasOneThrough
关联关系Eloquent 现在提供了对
hasOneThrough
关联类型的支持。例如,假设 Supplier 模型类与 Account 模型类之间是一对一关联,并且 Account 模型类与 AccountHistory 模型类之间也是一对一关联,那么 Supplier 模型类与 AccountHistory 模型类之间可以通过hasOneThrough
方法基于 Account 模型类建立远层的一对一关联。你可以用hasOneThrough
关联关系通过 Account 模型类访问 AccountHistory 模型类:/** * Get the account history for the supplier. */ public function accountHistory() { return $this->hasOneThrough(AccountHistory::class, Account::class); }
自动寻找模型策略
当使用 Laravel 5.7 时,每个模型对应的 认证策略 都需要被显式地注册到应用的
AuthServiceProvider
中:/** * 当前应用的策略对应关系 * * @var array */ protected $policies = [ 'App\User' => 'App\Policies\UserPolicy', ];
Laravel 5.8 引进了模型策略的自动寻找,只要模型和策略的命名符合 Laravel 的标准约定。即策略必须在
Policies
路径下,该路径之上包含模型。举个例子,模型可能放在app
路径下,则策略可以在放app/Policies
路径下。另外,策略名称必须匹配模型名称并且加上Policy
后缀。这样,User
模型将会对应上UserPolicy
类。如果你想要提供自己的策略寻找逻辑,你可以使用
Gate::guessPolicyNamesUsing
方法来注册一个自定义的回调函数。通常来说,这个方法应该从你应用的AuthServiceProvider
中被调用:use Illuminate\Support\Facades\Gate; Gate::guessPolicyNamesUsing(function ($modelClass) { // return policy class name... });
{note} 任何被显式地映射到
AuthServiceProvider
中的策略都将优先于隐式自动寻找策略。PSR-16 缓存规范
为了在存储缓存项时允许更细粒度的过期时间并遵守 PSR-16 缓存标准,我们将缓存项的有效期单位从分钟调整到秒。
IlluminateCacheRepository
及其扩展类的put
、putMany
、add
、remember
和setDefaultCacheTime
方法以及每个缓存存储实现类的put
Eloquent
Eloquent는 이제HasOneThrough
연관hasOneThrough
연관 유형을 지원합니다. 예를 들어, Supply 모델 클래스와 Account 모델 클래스 사이에 일대일 관계가 있고, Account 모델 클래스와 AccountHistory 모델 클래스 사이에도 일대일 관계가 있다고 가정하면, 공급자는 모델 클래스와 AccountHistory 모델 클래스는hasOneThrough
를 통해 연결할 수 있습니다. 이 메서드는 Account 모델 클래스를 기반으로 원격 수준에서 일대일 연결을 설정합니다.hasOneThrough
연관을 사용하여 Account 모델 클래스를 통해 AccountHistory 모델 클래스에 액세스할 수 있습니다: 🎜// Laravel 5.7 - 缓存30分钟... Cache::put('foo', 'bar', 30); // Laravel 5.8 - 缓存30秒... Cache::put('foo', 'bar', 30); // Laravel 5.7 / 5.8 - 缓存30秒... Cache::put('foo', 'bar', now()->addSeconds(30));
자동으로 모델 전략 찾기
🎜Laravel 5.7을 사용할 때 각 모델에 해당하는 인증 전략 모델은 애플리케이션의AuthServiceProvider
에 명시적으로 등록되어야 합니다. 🎜Broadcast::channel('channel', function() { // ... }, ['guards' => ['web', 'admin']])
🎜Laravel 5.8에서는 모델 및 전략의 이름이 Laravel의 표준 규칙을 준수하는 한 모델 전략에 대한 자동 검색을 도입합니다. 즉, 정책은 모델이 포함된정책
경로 아래에 있어야 합니다. 예를 들어 모델은app
경로 아래에 배치되고 정책은app/Policies
경로 아래에 배치될 수 있습니다. 또한 정책 이름은 모델 이름과 일치해야 하며Policy
라는 접미사가 붙어야 합니다. 이러한 방식으로User
모델은UserPolicy
클래스에 해당합니다. 🎜🎜자신만의 정책 검색 로직을 제공하려면Gate::guessPolicyNamesUsing
메서드를 사용하여 사용자 정의 콜백 함수를 등록할 수 있습니다. 일반적으로 이 메소드는 애플리케이션의AuthServiceProvider
에서 호출해야 합니다. 🎜$schedule->command('inspire') ->hourly() ->timezone('America/Chicago');
🎜{note}
AuthServiceProvider
에 명시적으로 매핑된 모든 정책은 암시적인 정책보다 우선합니다. 자동 검색 전략. 🎜PSR-16 캐싱 사양
🎜캐시 항목을 저장할 때 만료 시간을 더 세밀하게 허용하고 PSR-16 캐싱 표준을 준수하기 위해 캐시 항목 만료 단위를 다음에서 조정했습니다. 분에서 초까지.IlluminateCacheRepository
및 해당 확장 클래스의put
,putMany
,add
,remember
및 < 이렇게 각 캐시 저장 구현 클래스의 code>setDefaultCacheTime 메소드와put
메소드에 해당하는 유효기간 단위가 조정되었습니다. 자세한 내용은 관련 PR을 확인하실 수 있습니다. 🎜코드에서 위 메소드가 호출되면 현재 경과된 유효 시간이 이전 유효 시간과 일치하도록 해당 코드를 업데이트해야 합니다(단위는 이전 분 대신 초가 됨). 또한 캐시된 항목의 만료 시간을 식별하기 위해
DateTime
인스턴스를 전달합니다:DateTime
实例来标识缓存项的过期时间:/** * 获取默认定时任务时区。 * * @return \DateTimeZone|string|null */ protected function scheduleTimezone() { return 'America/Chicago'; }
多个广播认证看守器
在 Laravel 之前发行的版本中,私有和到场广播频道通过应用的默认认证 guard 对用户进行认证。从 Laravel 5.8 开始,你可以分配多个 guard 来对请求进行认证:
use Illuminate\Support\Facades\Artisan; Artisan::call('migrate:install', ['database' => 'foo']);
Token Guard 令牌哈希算法
Laravel 中提供基本 API 认证的
token
guard,现在支持以 SHA-256 哈希算法对 API 令牌进行存储。这比存储纯文本令牌更加安全。要了解更多有关哈希令牌的细节,请查阅完整的 API 认证文档。注: 即便 Laravel 提供了一个关简单的、基于令牌的认证 guard ,考虑到健壮性和提供了 API 认证的线上应用,我们强烈推荐你使用 Laravel Passport 。
改进 Email 验证器
Laravel 5.8 采用了 SwiftMailer 的
egulias/email-validator
包,改进了 email 验证器的验证逻辑。之前的 Laravel Email 验证逻辑认为有效的邮件地址,比如example@bär.se
,现在可能会被判定无效。默认定时任务时区
Laravel 允许用户使用
timezone
方法来自定义定时任务的时区:Artisan::call('migrate:install --database=foo');
如果你为每个定时任务都定义一个时区的话,这样会比较繁琐与麻烦。更简便的方法是在
app/Console/Kernel.php
文件内定义一个schedule Timezone
方法。这个方法将会把默认时区返回给所有的定时任务:// Laravel 5.7 $this->instance(Service::class, Mockery::mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); })); // Laravel 5.8 $this->mock(Service::class, function ($mock) { $mock->shouldReceive('process')->once(); });
中间表 /pivot 模型事件
在之前版本的 Laravel 中,当附着,分离或同自定义中间表 / 多对多关系的 “pivot” 模型时 Eloquent 模型事件不会被派遣。在现在的 Laravel 5.8 中,使用 定制中间表模型 时,这些事件都将被派遣。
Artisan 调用改进
Laravel 允许你通过
Artisan::call
方法来调用 Artisan 。在之前发布的 Laravel 中,命令的选项是通过一个数组作为第二个参数来传递到方法中的:use App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()); });
然而,Laravel 5.8 允许你传递完整的命令,包括其选项。它将作为第一个字符串参数到方法中:
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; class User extends JsonResource { /** * Indicates if the resource's collection keys should be preserved. * * @var bool */ public $preserveKeys = true; }
Mock / Spy 测试辅助方法
为了创建模拟对象更加方便, 新的
mock
和spy
use App\User; use App\Http\Resources\User as UserResource; Route::get('/user', function () { return UserResource::collection(User::all()->keyBy->id); });
Multiple Broadcast Authentication GuardsLaravel의 이전 릴리스에서는 개인 및 라이브 방송 채널이 애플리케이션의 기본 인증을 통해 사용자에게 인증되었습니다. 가드. Laravel 5.8부터 요청을 인증하기 위해 여러 가드를 할당할 수 있습니다:// scopePopular 和 scopeActive 方法定义在 User 模型中... $users = App\User::popular()->orWhere(function (Builder $query) { $query->active(); })->get();
Token Guard 토큰 해시 알고리즘 🎜🎜Laravel에서 기본 API 인증을 제공하는token
가드는 이제 저장을 위한 SHA -256 해시 알고리즘을 지원합니다. API 토큰. 이는 일반 텍스트 토큰을 저장하는 것보다 더 안전합니다. 해시 토큰에 대한 자세한 내용을 알아보려면 전체 API 인증 설명서를 확인하세요. 🎜🎜참고: Laravel이 간단한 토큰 기반 인증 가드를 제공하더라도 견고성과 온라인 애플리케이션에 대한 API 인증 제공을 고려하여 Laravel Passport를 사용하는 것이 좋습니다. 🎜
🎜개선된 이메일 유효성 검사기🎜🎜Laravel 5.8은 SwiftMailer의egulias/email-validator
패키지를 사용하여 이메일 유효성 검사기의 확인 로직을 개선합니다.example@bär.se
와 같이 이전에 Laravel 이메일 유효성 검사 로직에 의해 유효한 것으로 간주되었던 이메일 주소는 이제 유효하지 않은 것으로 간주될 수 있습니다. 🎜🎜기본 예약 작업 시간대🎜🎜Laravel을 사용하면 사용자는timezone
메서드를 사용하여 예약된 작업의 시간대를 맞춤 설정할 수 있습니다. 🎜$users = App\User::popular()->orWhere->active()->get();
🎜각 예약 작업에 시간대를 정의하면 다음과 같습니다. 더 번거롭고 귀찮습니다. 더 쉬운 방법은app/Console/Kernel.php
파일에서schedule Timezone
메서드를 정의하는 것입니다. 이 방법은 예약된 모든 작업에 기본 시간대를 반환합니다: 🎜rrreee🎜중간 테이블/피벗 모델 이벤트🎜🎜이전 버전의 Laravel에서는 사용자 정의 중간 테이블/다대다 관계를 사용하여 연결, 분리 또는 "피벗"할 때 ” model Eloquent 모델 이벤트는 전달되지 않습니다. 이제 Laravel 5.8에서는 사용자 정의 중간 테이블 모델을 사용할 때 이러한 이벤트가 전달됩니다. 🎜🎜Artisan 호출 개선🎜🎜Laravel을 사용하면Artisan::call
메소드를 통해 Artisan을 호출할 수 있습니다. 이전 Laravel 릴리스에서는 명령에 대한 옵션이 배열을 통해 두 번째 매개변수로 메소드에 전달되었습니다: 🎜rrreee🎜 그러나 Laravel 5.8에서는 옵션을 포함한 전체 명령을 전달할 수 있습니다. 이는 메소드에 첫 번째 문자열 매개변수로 전달됩니다: 🎜rrreee🎜Mock/Spy 테스트 도우미 메소드🎜🎜모의 객체를 보다 편리하게 생성하려면 새로운mock
및spy
메소드가 필요합니다. 기본 Laravel 테스트 케이스에 추가되었습니다. 이러한 메서드는 모의 클래스를 컨테이너에 자동으로 바인딩합니다. 예: 🎜rrreee🎜Eloquent 리소스 키가 지속됩니다. 🎜🎜Eloquent 리소스 컬렉션이 라우트에서 반환되면 Laravel은 컬렉션의 키가 간단한 숫자 순서로 정렬되도록 재설정합니다. 🎜rrreeeLaravel 5.8을 사용할 때 리소스 클래스에
rrreeepreserveKeys
속성을 추가하여 리소스 클래스의 키가 보존되는지 여부를 나타낼 수 있습니다. 기본적으로 이전 버전의 Laravel과 일관성을 유지하기 위해 다음 키가 재설정됩니다.preserveKeys
属性到资源类表明资源类的键是否保留。默认情况下,为了和之前版本的 Laravel 保持一致,这些键会被重置:当
rrreeepreserveKeys
的属性值设置为true
时, 集合键会被保留:高阶
orWhere
Eloquent 方法在之前发布的 Laravel 中,通过
rrreeeor
query 操作符来合并多个 Eloquent 模型作用域须使用闭包回调:Lavavel 5.8 引进了 「高阶」
rrreeeorWhere
方法,使你可以不用闭包,从而实现对作用域的流畅链式调用。Artisan Serve 改进
在之前发布的 Laravel 中,Artisan 的
serve
方法会启动你的应用服务,监听8000
端口。 如果一个serve
命令进程已经启动并占用了这个端口,那么通过serve
命令尝试启动第二个应用服务将会失败。从 Laravel 5.8 起,serve
会扫描可用的端口直到8009
,让你可以同时启动多个应用服务。模板文件映射
当编译 Blade 模板时,Laravel 现在会在编译文件的顶部添加注释,其中包含原始 Blade 模板路径。
DynamoDB 缓存 / Session 驱动
Laravel 5.8 引入了 DynamoDB 缓存和 session 驱动。DynamoDB 是 Amazon Web Services 提供的无服务器 NoSQL 数据库。默认的
dynamodb
缓存驱动配置可以在 Laravel 5.8 的 缓存配置文件 中找到。Carbon 2.0 支持
Laravel 5.8 提供对 Carbon 日期处理库
~2.0
发行版本的支持。Pheanstalk 4.0 支持
Laravel 5.8 提供对 Pheanstalk 队列库
~4.0
发行版本的支持。如果你的应用正在使用 Pheanstalk 库,请通过 Composer 升级该库到~4.0
rrreeepreserveKeys
의 속성 값이true
로 설정되면 컬렉션 키가 예약됩니다. :rrreeeLavavel 5.8에는 "고수준"고차
이전에 출시된 Laravel에서는 여러 Eloquent 모델을orWhere
Eloquent 메소드or
쿼리 연산자를 통해 병합할 수 있습니다. 클로저 콜백: rrreeeorWhere
메서드가 도입되었습니다. 이를 통해 클로저의 필요성을 없애고 범위에 대한 원활한 연결 호출을 달성할 수 있습니다. rrreeeArtisan Serve 개선
🎜이전에 출시된 Laravel에서 Artisan의serve
메소드는 애플리케이션 서비스를 시작하고8000
포트를 수신합니다.serve
명령 프로세스가 이미 시작되어 이 포트를 점유하고 있는 경우serve
명령을 통해 두 번째 애플리케이션 서비스를 시작하려는 시도는 실패합니다. Laravel 5.8부터serve
는8009
까지 사용 가능한 포트를 검색하므로 동시에 여러 애플리케이션 서비스를 시작할 수 있습니다. 🎜템플릿 파일 매핑
🎜블레이드 템플릿을 컴파일할 때 Laravel은 이제 원본 블레이드 템플릿 경로가 포함된 컴파일된 파일 상단에 주석을 추가합니다. 🎜DynamoDB 캐시/세션 드라이버
🎜Laravel 5.8에는 DynamoDB 캐시 및 세션 드라이버가 도입되었습니다. DynamoDB는 Amazon Web Services에서 제공하는 서버리스 NoSQL 데이터베이스입니다. 기본dynamodb
캐시 드라이버 구성은 Laravel 5.8 캐시 구성 파일에서 찾을 수 있습니다. 🎜Carbon 2.0 지원
🎜Laravel 5.8은 Carbon 날짜 처리 라이브러리~2.0
릴리스 버전을 지원합니다. 🎜Pheanstalk 4.0 지원
🎜Laravel 5.8은 Pheanstalk 대기열 라이브러리의~4.0
릴리스를 지원합니다. 애플리케이션이 Pheanstalk 라이브러리를 사용하는 경우 Composer를 통해 라이브러리를~4.0
릴리스로 업그레이드하세요. 🎜🎜이 글은 🎜LearnKu.com🎜 웹사이트에 처음 게시되었습니다. 🎜🎜업그레이드 지침 →