Skip to content

Laravel 10: Memaksimalkan Developer Experience (DX)

Published: at 15.22 (2 min read)

Pada hari Valentine kemarin, tepatnya 14 Februari 2023 komunitas PHP sedang berbahagia. Laravel, sebuah framework buatan Taylor Otwell merilis sebuah versi major, yakni versi 10. Salah satu fitur yang saya nantikan ialah Native Type Declarations.

Table of contents

Open Table of contents

Native Type Declarations

Saya sadur dari Laravel News, fitur yang satu ini membuat kita mendapatkan type-hinting pada kode-kode yang ada di aplikasi.

Meskipun demikian, untuk memaksimalkannya kita perlu melakukan beberapa langkah, agar ke depan kode-kode yang kita buat tetap inline dengan inisiasi awal, type hinting all day long!

Larastan

Pasang pada proyek dengan command:

composer require nunomaduro/larastan:^2.0 --dev

Buat berkas phpstan.neon atau phpstan.neon.dist di root proyek:

includes:
    - ./vendor/nunomaduro/larastan/extension.neon
parameters:
    paths:
        - app/
    # Level 9 is the highest level
    level: 9

Untuk membuktikannya, kita bisa mencobanya dengan command:

./vendor/bin/phpstan analyse

Lebih lanjut, apabila ingin kustomisasi berkas config diatas baca repositori Larastan.

Laravel Pint

Laravel Pint ini bertugas sebagai code style fixer, agar kode-kode yang kita (anggota tim development) tulis sesuai dengan standart yang sudah ditentukan, following the opinionated coding style of Laravel.

composer require laravel/pint --dev

Yep, cukup dengan instalasi diatas. Kita bisa mengecek code style kita dengan command:

./vendor/bin/pint

Pun demikian, kalian bisa kustomisasi style code sesuai dengan yang kalian kehendaki. Further more, baca dokumentasi Laravel Pint.

GrumPHP

Untuk menjaga agar kedua aturan diatas tetep berjalan dan diterapkan, kita perlu membuat sebuah source code defender!

composer require --dev phpro/grumphp

Kita buat script di berkas composer.json:

{
	...
	"scripts": {
		...
		"lint": [
            "./vendor/bin/pint --test"
        ]
	},
	...
}

Buat berkas grumphp.yml:

grumphp:
  tasks:
    composer_script:
      script: lint
      triggered_by: [php]
    phpstan:
      use_grumphp_paths: false

Lakukan percobaan, harusnya ketika pertama coba tidak ada error, dengan catatan masih fresh instalasi Laravel 10, belum ada kustomisasi proyek.

php ./vendor/bin/grumphp run

Setelah tidak ada error, kita perlu mendaftarkan command tersebut agar setiap kali kita menulis commit message mendapatkan feedback terlebih dahulu apakah kode yang kita tulis telah sesuai dengan standart atau belum. Kalau belum sesuai, commit tersebut akan batal dan kita perlu memperbaikinya.

php ./vendor/bin/grumphp git:init

Sementara cukup sekian dulu, kalau rame lanjut part 2! Cheers 😎