Sprint Satu, Setup Dulu

zain ilham
sinadin
Published in
5 min readFeb 24, 2019

Pada sprint pertama ini, kami mostly baru menyiapkan project yang akan dikerjakan. Saya juga baru menginstall ubuntu untuk mengerjakan project ini, sekarang laptop saya bisa dual boot. Selain itu untuk menginstall laravel, composer, dan PHP cukup susah. Pasalnya saya masih harus beradaptasi dengan OS Linux dan framework yang baru. Sebelumnya framework yang sering saya gunakan adalah Django. Namun ternyata Django dan Laravel tidak terlalu banyak berbeda. Mereka sama-sama menggunakan MVC dalam strukturisasi project.

Django memiliki jumlah folder yang lebih sedikit dibandingkan Laravel. Hal ini juga yang pertama kali membuat saya cukup bingung. Perhatikan gambar dibawah ini

Laravel Start Project Folders

Cukup banyak ya? Mari kita bahas beberapa folder yang cukup penting.

app/Http

Direktori ini merupakan direktori yang digunakan untuk menyimpan seluruh file-file yang berkaitan dengan proses request dan response Http. Dikretori ini memiliki tiga buah sub direktori :

  • app/Http/Controllers: Direktori ini digunakan untuk menyimpan seluruh class Controller yang kita buat. Misalnya ProductController.php, SalesController.php, dll.
  • app/Http/Middleware: Direktori ini digunakan untuk menyimpan seluruh class yang berhubungan dengna middleware PHP. Secara umum middleware adalah sebuah class yang akan dieksekusi sebelum HTTP request yang masuk diberikan kepada Controller. Tujuan dari class Middleware adalah untuk melakukan filter seperti misalnya menolak akses dari user yang belum login.
  • app/Http/Requests: Direktori ini hanya berisikan sebuah class yaitu Request.php yang dapat digunakan untuk mendapatkan data dari form request yang dikirim oleh web browser. Selain itu direktori ini juga ditujukan untuk menyimpan class validator yang kita buat baik yang dibuat secara manual ataupun dengan menggunakan perintah php artisan make:request.

database/migrations

Direktori ini berisikan file-file migrations yang digenerate oleh laravel pada saat kita menjalankan perintah php artisan make:migration. fitur migration sendiri sangat berguna untuk melakukan perubahan pada database baik itu penambahan tabel, penambahan kolom, menghapus kolom, menghapus tabel serta melakukan roll-back setiap perubahan database yang kita buat. Fitur migration ini akan sangat terasa manfaatnya terutama pada saat kita mengerjakan sebuah project di dalam sebuah tim dan banyak struktur database yang berubah seiring perkembangan project.

database/seeds

Direktori ini berisikan file-file dabase seeds yang digenerate oleh laravel pada saat kita menjalankan perintah php artisan make:seeder. fitur seeding di laravel sendiri sangat berguna apabila kita ingin melakukan inisialisasi data (data awalan) pada table yang kita buat.

public

Pada dasarnya laravel memisahkan antara direktori public dan private. direktori public adalah direktori dimana seluruh resource aplikasi dapat diakses melalui web browser seperti misalnya gambar, javascript dan css. Sedangkan direktori private sendiri berisikan seluruh kode PHP yang telah kita buat ataupun yang merupakan bawaan dari framwork laravel itu sendiri. Umumnya, dalam melakukan proses deployment laravel yang secure, hanya direktori public ini sajalah yang diletakkan di dalam direktori public_html pada web server sedangkan direktori lainnya diletakkan di luar direktori public_html.

resources

Direktori ini memiliki tiga buah sub direktori yaitu “assets”, “lang” dan views. Berikut ini adalah penjelas singkat terkait fungsi dari masing-masing sub direktori tersebut:

  • assets: Sejak rilis versi 5, laravel memiliki sebuah fitur yang bernama laravel elixir. Fitur ini ditujukan untuk membantu para pengguna laravel untuk meng-compile file less, saas dan coffescript yang mereka buat. Nah, direktori ini ditujukan untuk menyimpan resources tersebut yang nantinya akan secara otomatis dicompile oleh laravel dengan menggunakan gulp dan dipindahkan ke dalam direktori public. Selain itu kita juga dapat menyimpan resources berupa image atau berkas-berkas lain yang nantinya akan dipindahkan oleh laravel kedalam direktori public dengan cara yang sama.
  • lang: Secara default laravel sudah memiliki support terhadap implementasi localization yang dapat membantu para pengguna framework untuk menciptakan aplikasi web yang multi bahasa. Direktori ini menyimpan seluruh definisi bahasa yang telah kita buat.
  • views: Direktori ini digunakan untuk menyimpan seluruh file html / template blade yang kita buat.

test

Laravel merupakan sebuah framework yang didesain dengan mindset testable framework. Oleh karena itu, secara default laravel sudah menyediakan library-library yang dibutuhkan untuk dapat melakukan unit testing seperti PHPUnit dan Mockery. Nah, direktori ini berfungsi untuk menyimpan seluruh file test yang dibuat untuk kemudian dijalankan oleh PHPUnit. Untuk menjalankan tes dengan phpunit dengan perintah

vendor/bin/phpunit

IT Begins

Setelah belajar Laravel dan model MVCnya, saya mengerjakan fitur login. Tidak lupa menerapkan TDD, saya membuat unit test terlebih dahulu. TDD itu apa ya? TDD kepanjangan dari Test Driven Development. Secara langsung bahasa indonesianya itu pengembangan yang disetir oleh Pak Test menuju kota tanpa stress. Wah hebat ya ngoding tanpa stress 😅. Mari kita lihat bagaimana implementasinya

  1. sebelum menulis kode, tuliskan test-nya terlebih dahulu. Pastikan kita memasukkan semua kemungkinan yang dapat kita pikirkan untuk input dan outputnya.
  2. Jalankan test-nya, dan pastikan test-nya fail karena belum ada kode apapun untuk membuat test-nya pass.
  3. Ketik working code seminimum mungkin dengan tujuan agar test-nya pass.
  4. Jalankan test dan cek apakah test-nya pass. Jika belum pass, maka perbaiki working code kita sampai memenuhi ekspektasi dari test.
  5. Merasa working code yang kita tulis tadi berantakan ? Jangan khawatir, Refactor the code, do some cleaning and DRY-ing. Selama test-nya masih pass, berarti tidak ada masalah dengan kode yang di refactor tersebut.
  6. Ulangi proses dari no 1–5 untuk fungsi-fungsi lainnya.

TDD memiliki banyak sekali manfaat. TDD akan membuat kita terarah dalam menuliskan code. Selain itu TDD akan meminimalisir bug yang mungkin terjadi, karena implementasi codenya telah diatur oleh tes. Dalam kerjasama tim, TDD juga akan membantu apabila program kita error karena teman kita mengotak-atik code kita.

Sekarang mari kita terapkan TDD pada project sinadin. Berikut adalah salah satu contoh test yang saya buat

mengecek apakah user akan berpindah ke halaman /home setelah berhasil melakukan login.

Setelah selesai menulis tes, jangan lupa untuk commit terlebih dahulu. dengan perintah

git commit -m "[RED] Membuat tes login"

karena saya baru membuat tes, maka menurut ketentuan PPL 2019, ketika membuat commit diawali dengan tag [RED]. Ketika sudah mengimplementasikan fungsinya dan telah lulus tes, tag yang digunakan adalah [GREEN]. Apabila kita ingin mengganti penamaan variable atau membuat code kita menjadi clean, gunakan tag [REFACTOR]. Sedangkan jika ingin mengganti sesuatu yang tidak berhubungan dengan fungsi utama aplikasi seperti ingin menambah gambar, gunakan tag [CHORES].

Clean Code, Best Code

Setelah menulis tes, sekarang kita mengimplementasikan fungsinya. Ketika menuliskan code, ada beberapa etika yang harus diperhatikan agar code yang kita buat rapi dan bisa dibaca oleh orang lain. Berikut ini adalah fundamental dalam penulisan code yang diimplementasikan pada bahasa pemrograman PHP

  1. Jangan menambahkan kata yang tidak perlu
  2. Argumen dari fungsi maximal 2
  3. Satu fungsi mengerjakan satu task

Laravel telah menyediakan fitur login yang cukup lengkap. Untuk memakainya kita dapat menjalankan perintah artisan make:auth .Laravel akan membuatkan fungsi login termasuk fitur register, forgot password, dan logout. Jika ingin mengubah implementasinya bisa melakukan override padaa loginController.php .

Sekian tulisan saya kali ini. Semoga teman-teman mengerti dan tertarik dengan framework Laravel ini.

LARAVEL IS ROCK !

--

--