Rumah > Artikel > rangka kerja php > Ringkaskan penambahan, pembetulan dan perubahan baharu dalam versi Laravel 9.5!
Artikel ini membawakan anda pengetahuan yang berkaitan tentang laravel Pasukan Laravel mengeluarkan versi 9.5, yang merangkumi pemalsuan baris gilir separa, fungsi tambahan freezeTime(), penegasan assertDirectoryEmpty() storan, dsb., Semoga ia membantu semua orang .
[Cadangan berkaitan: video laravel]
Pasukan Laravel mengeluarkan versi 9.5, yang termasuk pemalsuan baris gilir separa, freezeTime () Fungsi pembantu, storan assertDirectoryEmpty () penegasan, penutupan dalam assertJsonPath (), dsb.:
@Lito menyumbang pada Collect::implode() Sokongan panggilan balik kepada mudahkan ->map()->implode() panggilan:
// 之前<br/>{{ $user->cities->map(fn ($city) => $city->name.' ('.$city->state->name.')')->implode(', ') }}<br/>// 使用回调 <br/>{{ $user->cities->implode(fn ($city) => $city->name.' ('.$city->state->name.')', ', ') }}<br/>
Mark Beech menyumbang menggunakan Storage::fake () Contoh keupayaan untuk menegaskan direktori kosong:
// 9.5 版本之前<br/>$this->assertEmpty(Storage::disk('temp')->allFiles('/foo'));<br/>// +9.5<br/>Storage::disk('temp')->assertDirectoryEmpty('/foo');<br/>
Jika tiada fail dalam direktori dan hanya subdirektori lain, penegasan akan gagal kerana ia mengandungi folder / fail lain. Berikut ialah contoh daripada perbincangan permintaan tarik:
Storage::fake('temp');<br/>Storage::disk('temp')->put('/foo/bar.txt', 'string');<br/>Storage::disk('temp')->assertDirectoryEmpty('/'); // 失败<br/>
Fabien Villepinte menyumbang penutupan lulus untuk assertJsonPath tanpa sebarang Keupayaan untuk memecahkan serasi ke belakang:
$response = TestResponse::fromBaseResponse(new Response([<br/> 'data' => ['foo' => 'bar'],<br/>]));<br/>$response->assertJsonPath('data.foo', 'bar');<br/>$response->assertJsonPath('data.foo', fn ($value) => $value === 'bar');<br/>
Walaupun contoh di atas kelihatan lebih mudah menggunakan versi rentetan, jika anda memerlukan logik yang lebih kompleks di sekitar penegasan laluan, anda kini boleh menggunakan penutupan.
Taylor Otwell menyumbang pemalsuan separa pada baris gilir yang diuji:
Queue::fake([JobsToFake::class, /* ... */]);<br/>
Hafez Divandari menyumbangkan keupayaan untuk mencipta model "melalui" baharu tanpa perlu mengatasi keseluruhan kaedah hasOneThrough atau hasManyThrough:
// Define a `newThroughInstance` method<br/>protected function newThroughInstance($resource)<br/>{<br/> return (new \App\Models\ExampleEntity)->setTable($resource);<br/>}<br/>
Disumbangkan oleh Markus Hebenstreit The wrap( ) fungsi pembantu rentetan telah ditambah. Berikut ialah contoh penggunaan daripada perihalan permintaan tarik:
Str:wrap('value')->wrap('"');<br/>Str::of('value')->wrap('"');<br/>str('value')->wrap('"');<br/>// 输出: "value"<br/>Str:wrap('is', 'This ', ' me!');<br/>Str::of('is')->wrap('This ', ' me!');<br/>str('is')->wrap('This ', ' me!');<br/>// 输出: This is me!<br/>
@Italo menyumbang pembantu freezeTime() - yang akan digunakan dalam ujian Kaedah ujian yang membekukan masa semasa:
public function test_something()<br/>{<br/> $this->freezeTime();<br/> // 或将时间设置为日期的当前秒<br/> // 没有亚秒级精度。<br/> $this->freezeSecond();<br/>}<br/>
Kaedah freezeTime() ialah gula sintaktik untuk:
$this->travelTo(Carbon::now());<br/>
Dries Vints membantu menerima objek boleh panggil dalam kaedah Http::beforeSending() dan bukannya kelas boleh panggil sahaja. Sekarang, contoh berikut akan berfungsi dan bukannya mendapatkan "fungsi panggilan ahli __invoke() pada tatasusunan":
Http::baseUrl('https://api.example.org')<br/> ->beforeSending([ $this, 'prepareRequest' ])<br/> ->asJson()<br/> ->withoutVerifying();<br/>
Anda boleh menyemak ciri baharu dan dikemas kini di bawah Semak keluar senarai penuh dan perbezaan antara 9.4.0 dan 9.5.0 di GitHub. Nota keluaran berikut diambil terus daripada log perubahan:
Versi 9.5.0
Baharu
Menambah sokongan panggilan balik Ditambah untuk kaedah pengumpulan meletup. (#41405)
Ditambah Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty(). (#41398)
Laksanakan “metadata” e-mel untuk SesTransport. (#41422)
Jadikan assertPath () menerima penutupan. (#41409)
Menambah sokongan boleh panggil untuk operatorForWhere pada koleksi. (#41414, #41424)
Menambah pemalsuan baris gilir separa. (#41425)
Pilihan –nama ditambahkan pada arahan jadual:uji. (#41439)
mentakrifkan Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance(). (#41444)
Ditambah Illuminate/Support/Stringable::wrap() (#41455)
Menambahkan fungsi pembantu "freezeTime" untuk ujian. (#41460)
Membenarkan penggunaan sebelumMenghantar panggilan dalam Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks(). (#41489)
Tetap
Tetap apabila menapis nama atau domain daripada amaran Penamatan untuk route:list . (#41421)
Respons HTTP::pool telah diperbaiki apabila URL mengembalikan kod status kosong. (#41412)
Leraian nama pengingat tetap dalam Illuminate/Session/Middleware/AuthenticateSession.php. (#41429)
Instance pengawal tetap digunakan dalam /Illuminate/Session/Middleware/AuthenticateSession.php (#41447 )
Laluan:senarai tetap –kecuali-penjual untuk menyembunyikan Laluan::lihat () & Laluan::ubah hala () (#41465)
Tukar
Tambahkan jenis kosong untuk sifat sambungan dalam IlluminateDatabaseEloquentFactoriesFactory . (#41418)
Nama tempah yang dikemas kini dalam GeneratorCommand (#41441)
direka semula php artisan schedule:list arahan. (#41445)
Melanjutkan sifat proksi peringkat tinggi yang fasih. (#41449)
Benarkan menghantar parameter bernama ke skop tempatan dinamik. (#41478)
Melemparkan pengecualian jika teg melepasi tetapi tidak disokong dalam Illuminate/Encryption/Encrypter.php. (#41479)
Kemas Kini PackageManifest::$vendorPath untuk kes apabila folder vendor komposer tiada dalam folder projek. (#41463)
[Cadangan berkaitan: tutorial video laravel]
Atas ialah kandungan terperinci Ringkaskan penambahan, pembetulan dan perubahan baharu dalam versi Laravel 9.5!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!