Rumah > rangka kerja php > Laravel > teks badan

Ringkaskan penambahan, pembetulan dan perubahan baharu dalam versi Laravel 9.5!

WBOY
Lepaskan: 2022-04-06 15:46:43
ke hadapan
2538 orang telah melayarinya

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 .

Ringkaskan penambahan, pembetulan dan perubahan baharu dalam versi Laravel 9.5!

[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.:

Sokongan panggilan balik untuk kaedah Implode koleksi

@Lito menyumbang pada Collect::implode() Sokongan panggilan balik kepada mudahkan ->map()->implode() panggilan:

// 之前<br/>{{ $user->cities->map(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;)->implode(&#39;, &#39;) }}<br/>// 使用回调 <br/>{{ $user->cities->implode(fn ($city) => $city->name.&#39; (&#39;.$city->state->name.&#39;)&#39;, &#39;, &#39;) }}<br/>
Salin selepas log masuk

Gunakan Storage Fake untuk menegaskan direktori kosong

Mark Beech menyumbang menggunakan Storage::fake () Contoh keupayaan untuk menegaskan direktori kosong:

// 9.5 版本之前<br/>$this->assertEmpty(Storage::disk(&#39;temp&#39;)->allFiles(&#39;/foo&#39;));<br/>// +9.5<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/foo&#39;);<br/>
Salin selepas log masuk

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(&#39;temp&#39;);<br/>Storage::disk(&#39;temp&#39;)->put(&#39;/foo/bar.txt&#39;, &#39;string&#39;);<br/>Storage::disk(&#39;temp&#39;)->assertDirectoryEmpty(&#39;/&#39;); // 失败<br/>
Salin selepas log masuk

Pernyataan JSON "assertJsonPath ()" kini menerima penutupan

Fabien Villepinte menyumbang penutupan lulus untuk assertJsonPath tanpa sebarang Keupayaan untuk memecahkan serasi ke belakang:

$response = TestResponse::fromBaseResponse(new Response([<br/>    &#39;data&#39; => [&#39;foo&#39; => &#39;bar&#39;],<br/>]));<br/>$response->assertJsonPath(&#39;data.foo&#39;, &#39;bar&#39;);<br/>$response->assertJsonPath(&#39;data.foo&#39;, fn ($value) => $value === &#39;bar&#39;);<br/>
Salin selepas log masuk

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.

Pemalsuan Baris Separa

Taylor Otwell menyumbang pemalsuan separa pada baris gilir yang diuji:

Queue::fake([JobsToFake::class, /* ... */]);<br/>
Salin selepas log masuk

Cara baharu untuk mencipta model “melalui”

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/>
Salin selepas log masuk

Fungsi pembantu pembalut rentetan baharu

Disumbangkan oleh Markus Hebenstreit The wrap( ) fungsi pembantu rentetan telah ditambah. Berikut ialah contoh penggunaan daripada perihalan permintaan tarik:

Str:wrap(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>Str::of(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>str(&#39;value&#39;)->wrap(&#39;"&#39;);<br/>// 输出: "value"<br/>Str:wrap(&#39;is&#39;, &#39;This &#39;, &#39; me!&#39;);<br/>Str::of(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>str(&#39;is&#39;)->wrap(&#39;This &#39;, &#39; me!&#39;);<br/>// 输出: This is me!<br/>
Salin selepas log masuk

Pembantu Masa Pembekuan untuk ujian

@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/>
Salin selepas log masuk

Kaedah freezeTime() ialah gula sintaktik untuk:

$this->travelTo(Carbon::now());<br/>
Salin selepas log masuk

Membenarkan objek boleh dipanggil diterima dalam Http::beforeSending ()

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(&#39;https://api.example.org&#39;)<br/>    ->beforeSending([ $this, &#39;prepareRequest&#39; ])<br/>    ->asJson()<br/>    ->withoutVerifying();<br/>
Salin selepas log masuk

Nota Keluaran

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!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!