Artisan

Perintah make, migrate, serve, dan tinker sebagai perkakas kerja harian.

Daftar isi

Artisan adalah antarmuka command line bawaan Laravel yang dipanggil melalui berkas artisan pada akar proyek. Topik ini memperkenalkan perintah Artisan yang digunakan sehari-hari, yaitu menghasilkan kelas aplikasi dengan make, menyiapkan skema database dengan migrate, menjalankan server pengembangan dengan serve, dan bereksperimen dengan kode secara interaktif melalui tinker.

Menjalankan Artisan#

Bentuk panggilannya selalu sama, yaitu php artisan diikuti nama perintah, dan seluruh perintah dijalankan dari akar proyek karena berkas artisan berada di sana. Perintah paling sederhana untuk memastikan instalasi bekerja adalah --version, yang menampilkan versi framework yang sedang digunakan.

bash
cd ~/aplikasi-catatan
# tampilkan versi Laravel yang terpasang
php artisan --version
text Keluaran
Laravel Framework 13.39.0

Sebagian besar perintah Artisan bekerja pada aplikasi secara utuh, sehingga setiap panggilan melakukan bootstrap framework lebih dahulu, termasuk memuat konfigurasi dan service provider. Karena itu, keluaran sebuah perintah dapat bergantung pada isi .env dan kondisi database proyek, bukan sekadar pada argumen yang diberikan.

Menelusuri daftar perintah#

Perintah php artisan list menampilkan seluruh perintah yang terdaftar, baik milik framework maupun milik paket yang terpasang, beserta deskripsi singkatnya. Daftar tersebut panjang karena puluhan perintah bawaan, sehingga dalam praktiknya perintah list sering digabungkan dengan penyaring keluaran, misalnya php artisan list | grep make: untuk melihat semua perintah pembuat kelas.

Cara menelusuri yang lebih terarah adalah menambahkan nama namespace setelah list, misalnya php artisan list make yang hanya menampilkan perintah berawalan make:. Adapun detail cara penggunaan satu perintah, termasuk opsi dan argumennya, ditampilkan oleh php artisan help nama-perintah. Dua jalur penelusuran ini cukup untuk menemukan perintah apa pun tanpa membuka dokumentasi terlebih dahulu.

Perintah make#

Keluarga perintah make: menghasilkan kerangka kelas pada lokasi konvensi, lengkap dengan namespace dan struktur dasar yang sudah benar. Perintah ini menghilangkan penyalinan templat kelas secara manual. Contoh berikut membuat kelas controller baru, tetapi tidak dijalankan di sini karena kelas contoh tidak diperlukan proyek.

bash
# tidak-dijalankan
php artisan make:controller ContohController

Keluaran asli perintah tersebut saat dijalankan pada proyek contoh adalah sebagai berikut.

text Hasil perintah make:controller

   INFO  Controller [app/Http/Controllers/ContohController.php] created successfully.  

Perintah make pada umumnya menyediakan opsi untuk menyesuaikan kerangka yang dihasilkan. Contohnya, opsi --resource pada make:controller membuat controller yang sudah berisi tujuh metode kosong sesuai pola CRUD.

bash
# tidak-dijalankan
php artisan make:controller CatatanController --resource

Keluaran aslinya pada proyek contoh adalah sebagai berikut.

text Hasil perintah make:controller --resource

   INFO  Controller [app/Http/Controllers/CatatanController.php] created successfully.  

Daftar lengkap perintah make beserta opsinya dapat ditelusuri melalui php artisan list make. Setiap kelas yang dihasilkan menempati lokasi konvensi struktur proyek, misalnya controller di app/Http/Controllers dan middleware di app/Http/Middleware.

Perintah migrate#

Perintah migrate mengeksekusi migration, yaitu berkas PHP yang mendefinisikan perubahan skema database seperti pembuatan tabel dan kolom. Perintah ini mencatat migration yang sudah dijalankan pada tabel khusus, sehingga panggilan berikutnya hanya mengeksekusi migration yang belum berjalan. Sifat inkremental inilah yang membuat migrate aman untuk diulang.

bash
# tidak-dijalankan
php artisan migrate --force

Keluaran perintah migrate bergantung pada status database, yaitu daftar migration yang baru dieksekusi apabila database masih kosong, atau pesan bahwa tidak ada yang perlu dimigrasikan apabila skema sudah mutakhir. Karena itu, keluarannya tidak dipaparkan di sini. Perintah turunannya seperti migrate:rollback dan migrate:fresh mengelola pembatalan serta pembuatan ulang skema, dan migrate:status menampilkan daftar migration yang sudah maupun belum dieksekusi.

Perintah serve#

Perintah serve menjalankan web server pengembangan bawaan PHP dan mengarahkannya ke direktori public proyek. Secara baku, aplikasi dapat diakses pada http://localhost:8000 selama perintah berjalan, dan Ctrl+C pada terminal menghentikannya.

bash
# tidak-dijalankan
php artisan serve

Server ini ditujukan untuk pengembangan di komputer lokal, bukan untuk produksi. Perintahnya berjalan terus sampai dihentikan, sehingga terminal yang menjalankannya tidak dapat dipakai untuk perintah lain. Pada lingkungan produksi, aplikasi dilayani oleh web server seperti Nginx bersama PHP-FPM.

Perintah tinker#

Perintah tinker membuka sesi interaktif PHP di dalam aplikasi yang sudah selesai bootstrap, sehingga kode dapat dieksekusi baris demi baris dengan seluruh kelas Laravel tersedia. Cara ini cepat untuk menguji potongan kode, memeriksa nilai konfigurasi, atau mencoba query tanpa membuat berkas sementara.

Untuk eksekusi sekali jalan yang tidak membuka sesi interaktif, tersedia opsi --execute. Perintah berikut mengevaluasi collection sederhana dan mencetak hasilnya.

bash
cd ~/aplikasi-catatan
# jalankan potongan kode lewat tinker tanpa sesi interaktif
php artisan tinker --execute='echo collect([1, 2, 3])->sum();'
text Keluaran
6

Nilai 6 adalah jumlah seluruh elemen collection yang dihitung metode sum(). Bentuk --execute seperti ini juga berguna untuk memverifikasi perilaku rute, controller, dan view langsung dari command line tanpa perlu membuka browser.

Kesalahan umum#

Kesalahan pertama adalah menjalankan Artisan dari luar akar proyek. PHP tidak menemukan berkas artisan dan berhenti dengan pesan Could not open input file: artisan. Perbaikannya adalah berpindah ke akar proyek terlebih dahulu dengan cd, atau memanggil perintah melalui jalur lengkap berkasnya.

Kesalahan kedua adalah mengharapkan make: menghasilkan kelas yang siap berfungsi. Kelas hasil make: hanyalah kerangka dengan metode kosong, sehingga aksinya tetap harus diisi. Kesalahan ketiga adalah menggunakan php artisan serve sebagai server produksi. Server tersebut berjalan pada satu proses tunggal tanpa lapisan keamanan web server, sehingga hanya layak untuk pengembangan lokal.

Ringkasan#

  • Artisan dipanggil dengan php artisan nama-perintah dari akar proyek, dan php artisan list beserta php artisan help menjadi alat penelusuran perintah.
  • Keluarga make: menghasilkan kerangka kelas pada lokasi konvensi, sedangkan migrate mengeksekusi migration secara inkremental berdasarkan catatan pada database.
  • serve menjalankan server pengembangan pada http://localhost:8000 dan hanya untuk keperluan lokal.
  • tinker membuka sesi interaktif dengan aplikasi yang sudah selesai bootstrap, dan opsi --execute mengeksekusi potongan kode sekali jalan.

Referensi#

  • Artisan Console — Laravel — Dokumentasi resmi perintah Artisan yang menjadi dasar pembahasan make, migrate, serve, dan tinker pada topik ini.
  • Migration — Laravel — Menjelaskan perintah migrate beserta perilaku inkrementalnya yang dirujuk pada bagian migrate.