Tim inti Laravel telah merilis versi 9.31 dengan pembaruan seperti pengendali durasi request lifecycle, update model tanpa merubah timestamp, batch palsu untuk testing, dan masih banyak lagi.
Pengendali durasi request lifecycle
Tim MacDonald menambahkan sebuah callback untuk mengendalikan ketika request lifecycle lebih lama dari waktu yang telah ditentukan:
use Carbon\CarbonInterval as Interval;
use Illuminate\Contracts\Http\Kernel;
public function boot()
{
if ($this->app->runningInConsole()) {
return;
}
$kernel = $this->app[Kernel::class];
$kernel->whenRequestLifecycleIsLongerThan(
Interval::seconds(1),
fn ($startedAt, $request, $response) => /* ... */
);
}
Callback ini mirip seperti yang ada pada perilisan Laravel 9.18 untuk durasi kueri database.
Fitur Model "without timestamps"
Tim MacDonald menambahkan fungsi statis dimana updated_at
tidak akan diperbarui:
$user = User::first();
// `updated_at` is not changed...
User::withoutTimestamps(
fn () => $user->update(['reserved_at' => now()])
);
Vite manifestHash function
Enzo Innocenzi berkontribusi sebuah method contributed a manifestHash()
untuk kelas Vite, yang mengembalikan hash unik jika manifestasi telah ada. Penambahan ini juga bisa digunakan untuk meng-invalidasi asset. Lihat Pull Request #44136 untuk detail lebih lanjut.
Batch buatan
Taylor Otwell menambahkan fake batches atau batch buatan:
Sebelumnya sangat sulit untuk melakukan test jika suatu batch dibatalkan atau jika ada job baru yang ditambahkan ke job batches, dimana kita harus membuat sebuah FakeBatch secara manual dan meng-override method cancel / add. Pembaruan ini mengatasi isu tersebut.
[$job, $batch] = (new TestJob)->withFakeBatch();
$job->handle();
$this->assertTrue($batch->cancelled());
$this->assertNotEmpty($batch->added);
Method getAppends() pada model
Arturo RodrÃguez menambahkan aksesor pada model untuk mendapatkan aksesor-aksesor yang added an accessor method to Model to get the accessors that are being diikutkan pada array model. Hal ini akan memudahkan mapping custom model:
$model->getAppends();
Method statis Str wrap
Steve Bauman menambahkan method static Str::wrap()
, yang dulunya hanya tersedia melalui Stringable:
Str::wrap('-bar-', 'foo', 'baz'); // 'foo-bar-baz'
str('-bar-')->wrap('foo', 'baz'); // 'foo-bar-baz'
Macroable vite
Tim MacDonald menambahkan trait Macroable pada to Illuminate\Foundation\Vite
untuk membuat alias-alias pada konfigurasi JS mu:
Vite::macro('image', fn ($asset) => $this->asset("resources/images/{$asset}"));
// Usage: <img src="{{ Vite::image('profile.png') }}" ... >
Lihat Pull Request #44198 untuk informasi lebih lanjut.
Release Notes
Kamu bisa melihat deretan fitur-fitur dan pembaruan baru serta perbedaan antara 9.30.0 dan 9.31.0 di GitHub. Catatan pembaruan ini berasal dari changelog:
9.31.0
Ditambahkan
- Added unique deferrable initially deferred constants for PostgreSQL (#44127)
- Request lifecycle duration handler (#44122)
- Added Model::withoutTimestamps(...) (#44138)
- Added manifestHash function to Illuminate\Foundation\Vite (#44136)
- Added support for operator <=> in /Illuminate/Collections/Traits/EnumeratesValues::operatorForWhere() (#44154)
- Added that Illuminate/Database/Connection::registerDoctrineType() can accept object as well as classname for new doctrine type (#44149)
- Added Fake Batches (#44104, #44173)
- Added Model::getAppends() (#44180)
- Added missing Str::wrap() static method (#44207)
- Added require symfony/uid (#44202)
- Make Vite macroable (#44198)
Diperbaiki
- Async fix in Illuminate/Http/Client/PendingRequest (#44179)
- Fixes artisan serve command with PHP_CLI_SERVER_WORKERS environment variable (#44204)
- Fixed InteractsWithDatabase::castAsJson($value) incorrectly handles SQLite Database (#44196)
Dirubah
- Improve Blade compilation exception messages (#44134)
- Improve test failure output (#43943)
- Prompt to create MySQL db when migrating (#44153)
- Improve UUID and ULID support for Eloquent (#44146)
Disadur dari: Laravel News - Laravel 9.31 released