【相關推薦:】
Laravel 團隊釋出了 9.5 版本,其中包括部分佇列偽造,freezeTime () 輔助函數,儲存 assertDirectoryEmpty () 斷言,assertJsonPath () 中的閉包等:
@Lito 貢獻了在 Collect::implode() 上的回撥支援, 以簡化 ->map()->implode() 呼叫:
// 之前 {{ $user->cities->map(fn ($city) => $city->name.' ('.$city->state->name.')')->implode(', ') }} // 使用回撥 {{ $user->cities->implode(fn ($city) => $city->name.' ('.$city->state->name.')', ', ') }}
Mark Beech 貢獻了使用 Storage::fake () 範例斷言空目錄的能力:
// 9.5 版本之前 $this->assertEmpty(Storage::disk('temp')->allFiles('/foo')); // +9.5 Storage::disk('temp')->assertDirectoryEmpty('/foo');
如果目錄中沒有檔案,只有其他子目錄,則斷言將失敗,因為它包含其他資料夾 / 檔案。這裡有一個來自 pull request discussion 的例子:
Storage::fake('temp'); Storage::disk('temp')->put('/foo/bar.txt', 'string'); Storage::disk('temp')->assertDirectoryEmpty('/'); // 失敗
Fabien Villepinte 貢獻了將閉包傳遞給 assertJsonPath 的,沒有任何向後相容的中斷的能力:
$response = TestResponse::fromBaseResponse(new Response([ 'data' => ['foo' => 'bar'], ])); $response->assertJsonPath('data.foo', 'bar'); $response->assertJsonPath('data.foo', fn ($value) => $value === 'bar');
雖然上面的範例使用字串版本似乎更簡單,但如果你需要圍繞路徑斷言更復雜的邏輯,你現在可以使用閉包。
Taylor Otwell 為測試中的佇列貢獻了部分偽造:
Queue::fake([JobsToFake::class, /* ... */]);
Hafez Divandari 貢獻了不需要覆蓋整個 hasOneThrough 或者 hasManyThrough 方法而建立一個新的 「through」 模型的能力:
// Define a `newThroughInstance` method protected function newThroughInstance($resource) { return (new \App\Models\ExampleEntity)->setTable($resource); }
Markus Hebenstreit 貢獻了 wrap() 字串輔助函數。 這裡有一個來自 pull request description 的範例用法:
Str:wrap('value')->wrap('"'); Str::of('value')->wrap('"'); str('value')->wrap('"'); // 輸出: "value" Str:wrap('is', 'This ', ' me!'); Str::of('is')->wrap('This ', ' me!'); str('is')->wrap('This ', ' me!'); // 輸出: This is me!
@Italo 貢獻了 freezeTime() 輔助函數 —— 一個將在測試中凍結當前時間的測試方法:
public function test_something() { $this->freezeTime(); // 或將時間設定為日期的當前秒 // 沒有亞秒級精度。 $this->freezeSecond(); }
freezeTime() 方法是以下內容的語法糖:
$this->travelTo(Carbon::now());
Dries Vints 有助於在 Http::beforeSending() 方法中接受可呼叫物件,而不僅僅是可呼叫的類。 現在,以下範例將起作用,而不是獲取 「呼叫陣列上的成員函數 __invoke ()」:
Http::baseUrl('https://api.example.org') ->beforeSending([ $this, 'prepareRequest' ]) ->asJson() ->withoutVerifying();
你可以在下面檢視新功能和更新的完整列表以及在 GitHub 上查 9.4.0 和 9.5.0 之間的差異 。 以下發行說明直接來自 changelog:
9.5.0 版本
新增
增加了對 implode 集合方法的回撥支援。(#41405)
增加了 Illuminate/Filesystem/FilesystemAdapter::assertDirectoryEmpty()。 (#41398)
為 SesTransport 實施郵件 「後設資料」。 (#41422)
使 assertPath () 接受閉包。(#41409)
增加了部分佇列偽造。(#41425)
為 schedule:test 命令新增了 –name 選項。 (#41439)
定義了 Illuminate/Database/Eloquent/Concerns/HasRelationships::newRelatedThroughInstance()。(#41444)
增加了 Illuminate/Support/Stringable::wrap() (#41455)
為測試增加了 「freezeTime」 輔助函數。(#41460)
允許在 Illuminate/Http/Client/PendingRequest.php::runBeforeSendingCallbacks() 中使用 beforeSending 呼叫。(#41489)
修復
修復了在過濾名稱或域時來自 route:list 的棄用警告。 (#41421)
修復了當 URL 返回空狀態碼時的 HTTP::pool 響應。 (#41412)
修復了 Illuminate/Session/Middleware/AuthenticateSession.php 中的 recaller 名稱解析。(#41429)
修復了在 /Illuminate/Session/Middleware/AuthenticateSession.php 中被使用的 guard 範例 (#41447)
修復了 route:list –except-vendor,用於隱藏 Route::view () & Route::redirect () (#41465)
改變
在 \Illuminate\Database\Eloquent\Factories\Factory 中為連線屬性新增空型別。(#41418)
更新了 GeneratorCommand 中的保留名稱 (#41441)
重新設計了 php artisan schedule:list 命令。 (#41445)
擴充套件了 eloquent 高階代理屬性。(#41449)
允許傳遞已經命名的引數給動態的本地作用域。(#41478)
如果標籤通過但在 Illuminate/Encryption/Encrypter.php 中不受支援,則丟擲異常。(#41479)
當 composer vendor 資料夾不在專案的資料夾時 為案例更新 PackageManifest::$vendorPath 初始化。(#41463)
【相關推薦:】
以上就是歸納Laravel 9.5版本的新增、修復和改變!的詳細內容,更多請關注TW511.COM其它相關文章!