Nota Keluaran
- laravel 5.8
- eloquent Hasonethrough Association
- Automatically Cari Strategi Model PSR-16 Spesifikasi Cache
- Multiple Pengesahan Pengesahan KELUARGA Algoritma pencincangan token Guard Token
- Pembantu ujian olok-olok/Intip kaedah
- Kegigihan kunci sumber yang fasih
- Tertib lebih tinggi atauWhere Kaedah yang fasih
- Penambahbaikan Servis
- Pemetaan fail templat/db pemandu
- Sokongan Karbon 2.0
- sokongan Pheanstalk 4.0
Nota Keluaran
- Skim Kawalan Versi
- Strategi Sokongan
- Laravel 5.8
Skim Kawalan Versi
. Rangka kerja versi kecil dikeluarkan setiap enam bulan (Februari dan Ogos), manakala versi semakan, yang memang mengandungi perubahan pecah, boleh dikeluarkan setiap minggu. 主版本号.次版本号.修订号
。次版本号框架每六个月(二月和八月)发布,而修订号版本可能每周发布一次,修订号版本 不 包含重大更改。当你从应用程序中或者在包中引用 Laravel 框架或者其他组件时,应该始终使用版本约束,例如
Apabila anda merujuk rangka kerja Laravel atau komponen lain daripada aplikasi anda atau dalam pakej, anda harus sentiasa menggunakan kekangan versi, seperti5.7.*
5.7.*
, kerana versi kecil Laravel mengandungi perubahan yang pecah. Walau bagaimanapun, kami akan bekerja keras untuk memastikan anda boleh mengemas kini dalam masa sehari atau kurang. Keluaran antara versi utama selalunya mengambil masa bertahun-tahun, dan setiap keluaran mewakili perubahan asas dalam seni bina rangka kerja dan struktur asas. Pada masa ini tiada rancangan untuk membangunkan nombor versi utama. Dasar SokonganUntuk versi LTS, seperti 5.5, dua tahun pembetulan pepijat dan tiga tahun pembetulan keselamatan disediakan. Versi ini menyediakan sokongan dan penyelenggaraan yang paling lama. Untuk versi umum, hanya enam bulan pembetulan pepijat dan satu tahun pembetulan keselamatan disediakan.version release time bug fix deadline security fix deadline 5.0 february 4, 2015 august 4, 2015 9 Jun 2015 © 9 Jun 2017 © 9 Jun 2018 © 5.2 21 Disember 201621 Disember 2015 21 Jun 2016 21 Disember 2016 21 Disember 2015 5.425 Ogos 23 September 2017 23 Ogos 2017 24 Januari 2017 24 Julai 2017 24 Januari 2018 ) 30 Ogos 201730 Ogos 2019 2020 30 Ogos 5.6 7 Februari 2018 7 Ogos 2018 5.87 Februari 2019 5.7 p.m 9 9 tahun 4 Mac 4 September 2019 26 Februari 2019 26 Ogos 2019 26 Februari 2020 Laravel 5.8
Laravel 5.8 terus dioptimumkan berdasarkan Laravel 5.7, termasuk pengenalan hubungan Eloquent baharu (mempunyai satu-satu), pengesahan e-mel yang dioptimumkan, pendaftaran automatik kelas dasar kebenaran berdasarkan konvensyen, cache DynamoDB dan Pemacu sesi , Optimumkan konfigurasi zon waktu penjadual tugas, sokongan memberikan berbilang pengawal pengesahan untuk menyiarkan saluran, spesifikasi pemacu cache PSR-16, mengoptimumkan perintah
artisan serve
, menyokong PHPUnit 8.0, menyokong Carbon 2.0, menyokong Pheanstalk 4.0, Serta pelbagai pembetulan pepijat dan peningkatan kebolehgunaan.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
Persatuan
Eloquent kini menyediakan sokongan untuk jenis persatuanHasOneThrough
FasihhasOneThrough
. Sebagai contoh, dengan mengandaikan bahawa terdapat perhubungan satu dengan satu antara kelas model Pembekal dan kelas model Akaun, dan terdapat juga perhubungan satu dengan satu antara kelas model Akaun dan kelas model AccountHistory, maka Pembekal kelas model dan kelas model AccountHistory boleh disambungkan melaluihasOneThrough
Kaedah mewujudkan perkaitan satu dengan satu di peringkat jauh berdasarkan kelas model Akaun. Anda boleh menggunakan perkaitanhasOneThrough
untuk mengakses kelas model AccountHistory melalui kelas model Akaun: 🎜// 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));
Cari strategi model secara automatik
🎜Apabila menggunakan Laravel 5.7, strategi pengesahan sepadan dengan setiap model Perlu didaftarkan secara eksplisit dalamAuthServiceProvider
aplikasi: 🎜Broadcast::channel('channel', function() { // ... }, ['guards' => ['web', 'admin']])
🎜Laravel 5.8 memperkenalkan carian automatik untuk strategi model, selagi penamaan model dan strategi mematuhi konvensyen standard Laravel. Iaitu, dasar mesti berada di bawah laluanPolicies
, yang mengandungi model. Sebagai contoh, model mungkin diletakkan di bawah laluanapp
dan dasar boleh diletakkan di bawah laluanapp/Policies
. Selain itu, nama dasar mesti sepadan dengan nama model dan diakhiri denganPolicy
. Dengan cara ini, modelUser
akan sepadan dengan kelasUserPolicy
. 🎜🎜Jika anda ingin memberikan logik pencarian dasar anda sendiri, anda boleh menggunakan kaedahGate::guessPolicyNamesUsing
untuk mendaftarkan fungsi panggil balik tersuai. Secara umumnya, kaedah ini harus dipanggil daripadaAuthServiceProvider
aplikasi anda: 🎜$schedule->command('inspire') ->hourly() ->timezone('America/Chicago');
🎜{note} Sebarang dasar yang dipetakan secara eksplisit kepada
AuthServiceProvider
akan diutamakan daripada yang tersirat strategi carian automatik. 🎜Spesifikasi Cache PSR-16
🎜Untuk membolehkan masa tamat tempoh yang lebih berbutir apabila menyimpan item cache dan mematuhi piawaian cache PSR-16, kami telah melaraskan unit tamat tempoh item cache dari minit ke Kedua.IlluminateCacheRepository
dan kelas sambungannyaput
,putMany
,add
,ingat
dan < Unit tempoh sah yang sepadan dengan kaedah kod>setDefaultCacheTime dan kaedahlet
setiap kelas pelaksanaan storan cache telah dilaraskan dengan cara ini. Anda boleh melihat PR berkaitan untuk butiran lanjut. 🎜Jika kaedah di atas dipanggil dalam kod anda, kod yang sepadan perlu dikemas kini untuk memastikan masa sah yang berlalu sekarang adalah konsisten dengan yang sebelumnya (unit menjadi saat dan bukannya minit sebelumnya, anda boleh). juga lulus contoh
DateTime
untuk mengenal pasti masa tamat tempoh item cache: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); });
Pengawal Pengesahan Berbilang SiaranDalam keluaran Laravel sebelum ini, saluran siaran peribadi dan langsung telah disahkan kepada pengguna melalui pengesahan lalai aplikasi Pensijilan. Bermula dari Laravel 5.8, anda boleh menetapkan berbilang pengawal untuk mengesahkan permintaan:// scopePopular 和 scopeActive 方法定义在 User 模型中... $users = App\User::popular()->orWhere(function (Builder $query) { $query->active(); })->get();
Algoritma cincang Token Guard Token 🎜🎜Pengawaltoken yang menyediakan pengesahan API asas dalam Laravel kini menyokong algoritma cincang SHA -256 untuk menyimpan token API. Ini lebih selamat daripada menyimpan token teks biasa. Untuk mengetahui butiran lanjut tentang token cincang, lihat dokumentasi Pengesahan API penuh. 🎜 🎜Nota: Walaupun Laravel menyediakan pengawal pengesahan berasaskan token yang ringkas, dengan mengambil kira keteguhan dan menyediakan pengesahan API untuk aplikasi dalam talian, kami amat mengesyorkan agar anda menggunakan Pasport Laravel. 🎜
🎜Pengesah E-mel yang dipertingkatkan🎜🎜Laravel 5.8 menggunakan pakejegulias/email-validator
SwiftMailer untuk memperbaik logik pengesahan pengesah e-mel. Alamat e-mel yang sebelum ini dianggap sah oleh logik pengesahan E-mel Laravel, sepertiexample@bär.se
, kini boleh dianggap tidak sah. . lebih menyusahkan dan menyusahkan. Cara yang lebih mudah ialah mentakrifkan kaedahjadual Zon Waktu
dalam failapp/Console/Kernel.php
. Kaedah ini akan mengembalikan zon waktu lalai kepada semua tugas yang dijadualkan: 🎜$users = App\User::popular()->orWhere->active()->get();
🎜Acara model jadual/pangsi perantaraan🎜🎜Dalam versi Laravel sebelumnya, apabila melampirkan, menanggalkan atau "pivot" dengan jadual perantaraan tersuai/perhubungan banyak-ke-banyak ” model Acara model Fasih tidak dihantar. Dalam Laravel 5.8 sekarang, apabila menggunakan model jadual perantaraan tersuai, acara ini akan dihantar. 🎜🎜Penambahbaikan panggilan Artisan🎜🎜Laravel membolehkan anda memanggil Artisan melalui kaedahArtisan::call
. Dalam keluaran Laravel sebelum ini, pilihan untuk arahan dihantar kepada kaedah melalui tatasusunan sebagai parameter kedua: 🎜rrreee🎜 Walau bagaimanapun, Laravel 5.8 membenarkan anda menghantar arahan lengkap, termasuk pilihannya. Ia akan dihantar sebagai parameter rentetan pertama kepada kaedah: 🎜rrreee🎜Kaedah pembantu ujian Mock/Spy🎜🎜Untuk mencipta objek olok-olok dengan lebih mudah, Kaedahmock
danspy
baharu telah ditambahkan pada kes ujian Laravel asas. Kaedah ini secara automatik mengikat kelas olok-olok ke bekas. Contohnya: 🎜rrreee🎜Kunci sumber fasih kekal 🎜🎜Apabila koleksi sumber Eloquent dikembalikan daripada laluan, Laravel menetapkan semula kunci koleksi supaya ia berada dalam susunan berangka yang mudah: 🎜rrreeeApabila menggunakan Laravel 5.8, anda boleh menambah atribut
rrreeepreserveKeys
pada kelas sumber untuk menunjukkan sama ada kunci kelas sumber itu dipelihara. Secara lalai, untuk konsisten dengan versi Laravel sebelumnya, kunci ini ditetapkan semula: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 队列库
Apabila nilai sifat~4.0
发行版本的支持。如果你的应用正在使用 Pheanstalk 库,请通过 Composer 升级该库到~4.0
rrreeepreserveKeys
ditetapkan kepadatrue
, kunci koleksi akan Dipelihara :rrreeeLavavel 5.8 memperkenalkan kaedahKaedah
Dalam Laravel yang dikeluarkan sebelum ini, berbilang model Eloquent boleh digabungkan melalui operator pertanyaanorWhere
tertib lebih tinggiatau
Skop mesti gunakan panggilan balik penutupan: rrreeeorWhere
"peringkat tinggi", yang membolehkan anda menghapuskan keperluan untuk penutupan dan mencapai panggilan berantai yang lancar ke skop. rrreeePeningkatan Artisan Serve
🎜Dalam Laravel yang dikeluarkan sebelum ini, kaedahserve
Artisan akan memulakan perkhidmatan aplikasi anda dan mendengar port8000
. Jika proses arahanserve
sudah dimulakan dan menduduki port ini, percubaan untuk memulakan perkhidmatan aplikasi kedua melalui perintahserve
akan gagal. Bermula dari Laravel 5.8,serve
akan mengimbas port yang tersedia sehingga8009
, membolehkan anda memulakan berbilang perkhidmatan aplikasi pada masa yang sama. 🎜Pemetaan Fail Templat
🎜Semasa menyusun templat Blade, Laravel kini menambah ulasan di bahagian atas fail yang dihimpun yang mengandungi laluan templat Blade asal. 🎜Cache/pemacu sesi DynamoDB
🎜Laravel 5.8 memperkenalkan cache dan pemacu sesi DynamoDB. DynamoDB ialah pangkalan data NoSQL tanpa pelayan yang disediakan oleh Perkhidmatan Web Amazon. Konfigurasi pemacu cachedynamodb
lalai boleh didapati dalam fail konfigurasi cache Laravel 5.8. 🎜Sokongan Karbon 2.0
🎜Laravel 5.8 menyediakan sokongan untuk versi keluaran pustaka pemprosesan tarikh Karbon~2.0
. 🎜Sokongan Pheanstalk 4.0
🎜Laravel 5.8 menyediakan sokongan untuk keluaran perpustakaan gilir Pheanstalk~4.0
. Jika aplikasi anda menggunakan perpustakaan Pheanstalk, sila tingkatkan pustaka kepada keluaran~4.0
melalui Composer. 🎜🎜Artikel ini pertama kali diterbitkan di laman web 🎜LearnKu.com🎜. 🎜🎜Laman web PHP Cina