New landing page
Halaman yang ditampilkan saat kita membuka beranda pada penginstalan laravel 8 telah mengalami perubahan yang signifikan dan sekarang dibuat dengan TailwindCSS. Dan ada beberapa informasi tautan ke berbagai produk SaaS dari Laravel, situs komunitas. Bahkan ada juga tautan ke toko Laravel.
Default app/models
directory
Pada laravel 8, secara default lokasi model berada pada direktori app/models
, pada versi sebelumnya laravel meletakkan model pada root direktori app
. Menurut survei Taylor sendiri pendapat banyak dari 80% orang lebih suka meletakkan model pada direktori app/models
.
Ketika kita sudah menggunakan laravel 8, maka ketika kita menjalankan php artisan make:model -
, perintah ini tentu akan membuat model baru di dalam direktori app/models
.
Controllers namespace prefix removed
Di versi Laravel sebelumnya, ada properti di RouteServiceProvider.php
bernama $namespace
yang digunakan untuk mengawali namespace
controller secara otomatis (App\Http\Controllers)
. Properti ini telah dihapus di Laravel 8.
protected $namespace = 'App\Http\Controllers';
Route caching improvements
php artisan route:cache
sangat bagus untuk kinerja dalam production. Namun, ada satu masalah di sini, ketika kita menjalankan perintah php artisan route:cache
route yang memiliki closure
akan menimbulkan masalah.
Tidak lagi di Laravel 8, sekarang route:cache
sudah mendukung closure
.
Blade component attributes improvements
Perbaikan ini terutama terkait dengan Nested components.
Misalnya kita memiliki component button
:
<button {{ $attributes }}>
{{ $slot }}
</button>
dan kita ingin extend pada component dangerbutton:
<x-button {{ $attributes->merge(['class' => 'bg-red']) }}>
{{ $slot }}
</x-button>
di Laravel 7, component turunan tidak akan memiliki $attributes
yang diturunkan. Sekarang di laravel 8 telah berubah, semua component turunan akan tersedia $attributes
, sehingga lebih mudah untuk membangun komponen yang ingin kita extend.
Event Listening improvements
Pada laravel sebelumnya, jika kita ingin membuat event listen, kita akan melakukannya seperti ini:
Event::listen(OrderCreated::class, function(OrderCreated $event){
info($event->whatever);
});
Di Laravel 8, kita bisa mendefinisikan seperti ini:
Event::listen(function(OrderCreated $event) {
// Do something
});
Queueable anonymous event listeners
Di Laravel 8, kita dapat mengirim job
ke queue
dari model event callback.
Misalnya:
class User extends Model {
protected static function booting()
{
static::created(queueable(function(User $user) {
// Do something in the background
}))
}
}
Maintenance mode: secret access
Saat ini, jika kita menggunakan perintah artisan down/artisan up
untuk mengalihkan aplikasi ke maintenance mode, tetapi kita ingin memberikan akses kepada beberapa orang developer lain, dll., satu-satunya cara untuk melakukannya adalah melalui pendaftaran IP Address. Ini tidak berfungsi dengan baik jika kita ingin memberikan akses ke banyak orang.
Sekarang di laravel 8 kita bisa menggunakan flag --secret
saat mengalihkan aplikasi ke maintenance mode, seperti berikut:
php artisan down --secret=let-me-in
Nilai pada flag --secret
let-me-in akan memberikan akses ke kita untuk melihat aplikasi dengan url seperti berikut https://www.demo.com/let-me-in
Maintenance mode: pre-rendered page
Di laravel 8 kita dapat menentukan view yang akan ditampilkan ketika menjalankan perintah php artisan down
.
php artisan down --render="errors::back-soon"
Enhanced rate limiting
Di Laravel 8, Kita sekarang dapat menentukan beberapa rate limit melalui RateLimiter
facade. Sebagai contoh:
RateLimiter::for('authentication', function(Request $request) {
return Limit::perMinute(50);
});
Contoh diatas bisa kita gunakan dengan middleware throttle
Route::get('/login')->middleware(['throttle:authentication']);
Time Testing Helpers
Laravel 8 menyediakan helper untuk unit testing, helper ini berguna untuk memanipulasi waktu ketika manjalankan unit testing:
// Travel into the future...
$this->travel(5)->milliseconds();
$this->travel(5)->seconds();
$this->travel(5)->minutes();
$this->travel(5)->hours();
$this->travel(5)->days();
$this->travel(5)->weeks();
$this->travel(5)->years();
// Travel into the past...
$this->travel(-5)->hours();
// Travel to an exact time...
$this->travelTo(now()->subHours(6));
// Return back to the present time...
$this->travelBack();
Saat menggunakan method
ini, waktu akan selalu direset ketika menjalankan unit testing.
Laravel JetStream & Laravel Fortify
Sekarang saatnya untuk menyapa Laravel JetStream, sebuah package open source untuk Laravel 8.
Package ini mempunyai banyak fungsi sebagai berikut:
- Authentication (login, dashboard, logout, password reset)
- Two factor authentication (fitur ini menarik, seperti Google Authenticator)
- Browser session management
- API token management (Menggunakan Laravel Sanctum dan adanya hak akses)
- Full "teams" functionality (user bisa membuat team, undang user ke team, dll)
- User profile
- Delete account functionality
Sebagai informasi, Laravel 8 akan dirilis pada 8 September 2020. Namun jika ingin segera mencobanya. Bisa ikuti step-step berikut ini.
- Update composer
composer global update
, jika perintah ini tidak berhasil. Jalankan perintah berikut ini:
composer global remove laravel/installer
composer global require laravel/installer
- Jalankan perintah
laravel new foo --jet --dev
Ini hanyalah beberapa fitur baru di Laravel 8 dan untuk melihat daftar lengkapnya, catatan rilis Laravel 8 serta panduan untuk upgrade dari versi sebelumnya.
Sekian, Terima kasih.
Ref: