Rumah  >  Artikel  >  rangka kerja php  >  Ringkaskan penambahan, pembetulan dan perubahan baharu dalam versi Laravel 9.5!

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

WBOY
WBOYke hadapan
2022-03-21 09:57:162577semak imbas

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/>

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/>

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/>

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/>

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/>

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/>

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/>

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/>

Kaedah freezeTime() ialah gula sintaktik untuk:

$this->travelTo(Carbon::now());<br/>

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/>

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!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:apakah fasad laravelArtikel seterusnya:apakah fasad laravel