Thursday, June 9, 2022

Belajar Framework Laravel - I

 

Laravel merupakan framework PHP paling populer saat ini. Salah satu faktor yang membuat perkembangan Laravel sedemikian pesat adalah selalu update dengan kebutuhan programmer. 

Framework memang bukan hal wajib untuk bisa membuat web, tapi untuk aplikasi yang besar dan butuh kerjasama tim, framework seperti Laravel akan sangat membantu. Penerapan design arsitektur MVC (Model-View-Controller) dirancang sedemikian rupa agar tidak saling tercampur antara design tampilan (HTML, CSS, JavaScript) dengan logika program (PHP, MySQL).

Pengertian Framework

Secara sederhana, framework adalah kumpulan kode program siap pakai dengan aturan penulisan tertentu yang bertujuan untuk memudahkan serta mempercepat pembuatan aplikasi. Lebih spesifik lagi, PHP framework adalah framework yang dibuat menggunakan bahasa pemrograman PHP.

Tujuan utama kenapa menggunakan framework adalah untuk mempercepat pembuatan aplikasi, karena di dalam framework sudah tersedia berbagai fitur siap pakai. Dimana tinggal menggunakan fitur ini tanpa perlu membuat semuanya dari nol. Selain itu aturan penulisan di framework akan memaksa untuk menggunakan cara penulisan yang baik (mengikuti standar best practice).

Framework pada awalnya berasal dari kebutuhan programmer untuk mengurangi pembuatan kode yang sama berulang kali.

Terdapat berbagai framework untuk keperluan yang berbeda-beda. Sebagai contoh, Bootstrap adalah sebuah framework CSS yang berisi kumpulan kode CSS untuk mempercepat pembuatan design web. Selain Bootstrap masih banyak framework CSS lain seperti MaterializeZurb FoundationBulma, dan Semantic UI.

Begitu juga di PHP, terdapat berbagai pilihan framework seperti Code IgniterSymfonyYiiZend dan tentu saja Laravel.

Dengan menggunakan framework, ibaratnya memanfaatkan keahlian ribuan programmer yang sudah lebih dahulu memikirkan apa yang harus dibuat dan bagaimana cara terbaik untuk membuatnya.

Perbedaan Framework dengan Library

Selain framework, terdapat juga istilah library. Keduanya sama-sama berisi kode program yang dibuat oleh programmer lain dan bisa dipakai untuk mempercepat pembuatan aplikasi.

Library umumnya berisi kumpulan kode program untuk tugas yang lebih spesifik (biasanya untuk 1 fungsi saja) sehingga lebih sederhana daripada framework.

Misalnya saat ingin membuat perhitungan statistika, maka bisa mencari library yang berisi rumus-rumus statistik siap pakai. Kode program ini erbentuk function atau class. Prinsip utama dari library adalah tetap memiliki kontrol tentang cara penulisan kode program.

Sebagai contoh, dompdf adalah library PHP yang bisa dipakai untuk membuat file pdf. Atau jQuery, yang merupakan salah satu library populer dari JavaScript.

Framework lebih kompleks daripada library dan dipakai untuk membuat sebuah aplikasi utuh, tidak hanya untuk 1 tugas. Pada prakteknya, di dalam framework bisa jadi terdapat puluhan library yang saling bekerja sama.

Prinsip utama dari framework adalah tidak memiliki kontrol tentang cara penulisan kode program. Framework sudah memiliki aturan penulisan baku yang harus di ikuti.


Perbedaan Framework vs PHP Native


Menggunakan framework memang akan mempersingkat waktu pembuatan aplikasi, namun tidak semua project cocok memakai framework. Perdebatan apakah sebaiknya memakai framework atau tidak (yakni menggunakan kode “PHP saja” atau dikenal sebagai “PHP Native“) menjadi topik di berbagai forum diskusi.


Alasan Untuk Tidak Menggunakan Framework

Ada beberapa alasan kenapa sebaiknya tidak menggunakan framework:

  • Aplikasi yang dibuat cukup sederhana.
  • Belum memiliki dasar web programming yang cukup.
  • Ingin mengejar performa.

Aplikasi yang dibuat cukup sederhana. Meskipun bisa, tapi kurang pas jika menggunakan framework hanya untuk membuat program menghitung luas segitiga. 

Belum memiliki dasar web programming yang cukup. Ini sering terjadi terutama bagi pemula yang ingin cepat-cepat masuk ke framework dengan melewatkan banyak materi dasar. Framework termasuk materi PHP tingkat advanced yang perlu dasar yang kuat. Tidak hanya PHP saja, tapi juga materi dasar web programming lain seperti HTML, CSS, MySQL dan JavaScript.

Ingin mengejar performa. Sebuah framework PHP umumnya terdiri dari ratusan hingga ribuan file PHP yang saling bekerja sama. Bahkan Laravel 9.0 terdiri dari sekitar 7.177 file PHP dengan total ukuran 33MB. Memang tidak semua file ini terpakai untuk setiap project, tapi performa yang dihasilkan mungkin bisa lebih tinggi jika dibuat tanpa framework.

Namun juga bukan berarti tanpa framework otomatis aplikasi akan berjalan dengan lebih cepat. Hal ini bergantung keahlian dalam membuat kode program PHP.

Performa juga merupakan salah satu indikator terpenting dari keberhasilan sebuah framework. Tim dibalik Laravel tentu selalu berusaha untuk mendapatkan performa terbaik.

Alasan Sebaiknya Menggunakan Framework

Dan berikut beberapa alasan sebaiknya menggunakan framework:

  • Tersedia fitur siap pakai.
  • Mengikuti best practice.
  • Mudah untuk kolaborasi
  • Mudah membaca kode program.
  • Keamanan aplikasi

Tersedia fitur siap pakai. Framework sudah menyediakan berbagai komponen siap pakai untuk membantu dalam merancang aplikasi. Sebagai contoh, di Laravel dengan 1 perintah sederhana bisa meng-generate form register lengkap dengan fitur login dan logout. Jika menggunakan PHP native, membuat fitur ini bisa butuh waktu lebih lama.

Tidak hanya itu, umumnya framework PHP menyediakan cara singkat untuk membuat fitur-fitur lain, seperti pembuatan form, validasi, menampilkan pesan error, mengakses database, pembuatan layout, dsb.

Mengikuti best practice. Framework memiliki aturan penulisan baku yang tidak bisa diubah. Dengan demikian akan “dipaksa” mengikuti cara penulisan framework. Cara penulisan ini sudah dipikirkan oleh ribuan programmer profesional yang merancang framework tersebut.

Sebagai contoh, sebagian besar framework PHP menggunakan konsep M-V-C, yakni singkatan dari ModelView dan Controller. Konsep MVC bertujuan untuk memisahkan 3 bagian program: kode untuk mengakses database (disebut sebagai model), kode untuk tampilan (view) dan kode untuk mengatur alur logika program (controller). Dengan pemisahan ini, aplikasi menjadi lebih rapi dan mudah di kelola..

Mudah untuk kolaborasi. Menggunakan framework juga memudahkan pembuatan kode program yang dibuat oleh tim. Framework memiliki aturan penulisan yang sudah baku sehingga setiap anggota tim bisa dengan mudah membaca alur kode program yang dibuat oleh programmer lain. Misalnya jika ada masalah dengan database, maka problem utama kemungkinan besar ada di model (bagian ‘M’ dari MVC).

Selain itu, konsep MVC juga membuat pemisahan antara front-end dan back-end yang lebih baku. Tim front-end yang mengembangkan design web bisa fokus ke sisi tampilan saja (view), sedangkan tim back-end bisa fokus ke alur logika aplikasi (controller dan model).

Mudah membaca kode program. Konsep yang sudah baku juga bermanfaat jika ada pergantian anggota tim. Tanpa framework, butuh waktu lama bagi programmer baru untuk memahami kode program yang sudah ada. Sangat mungkin konsep berfikir programmer sebelumnya berbeda jauh dengan programmer yang akan menggantikan.

Namun jika aplikasi tersebut dibuat dengan framework, setiap programmer harus mengikuti cara yang sudah diatur oleh framework tersebut. Misalnya kode program untuk pengaturan tampilan ada di View, pengaturan database ada di Model, dsb. Sehingga lebih mudah bagi programmer baru untuk melakukan modifikasi.

Keamanan Aplikasi. Keamanan untuk sebuah aplikasi “real world” merupakan hal wajib, namun kadang tidak tahuu apa yang harus diamankan dan bagaimana membuat kode programnya.

Sebagai contoh, ada celah kelemahan web yang dikenal sebagai CSRF atau Cross-Site Request Forgery, yakni teknik mengisi form (seperti form login), dengan kode program yang bukan berasal dari website. Celah ini bisa dimanfaatkan untuk membuat boot atau program yang terus-menerus mencoba mengisi form login.

Mayoritas framework PHP (termasuk Laravel), sudah menyediakan cara untuk mengatasi masalah ini, yaitu dengan memaksa untuk membuat sebuah CSRF token. Laravel akan menampilkan error jika sebuah form tidak memiliki CSRF token. Cara input token ini juga sangat sederhana, hanya perlu satu perintah singkat.

Fitur keamanan seperti ini sudah lebih dahulu dipikirkan oleh tim pengembang Laravel, sehingga aplikasi yang buat relatif lebih aman.


Keunggulan Framework Laravel

Jawaban singkat adalah karena Laravel merupakan framework PHP paling populer saat ini. Berikut hasil Google Trends untuk 5 framework PHP dalam 5 tahun terakhir (2015 – 2022):


Gambar: Perbandingan hasil Google Trends 5 Framework PHP

Google Trends menggambarkan apa yang paling banyak di search dari kotak pencarian Google. Terlihat bahwa Laravel sangat mendominasi jika dibandingkan 4 framework PHP lain, yakni CodeIgniterSymfonyZend dan Yii. Jika tertarik, anda bisa akses langsung ke: https://trends.google.com/trends/explore?date=today 5-y&q=Laravel,CodeIgniter,Symfony,Zend,Yii.

Hasil Google Trends ini bisa saja berasal dari blunder atau hal negatif yang membuat orang banyak mencari keyword tersebut, tapi kasus seperti itu biasanya hanya berefek singkat, tidak dalam waktu tahunan seperti grafik di atas.

Kepopuleran Laravel juga bisa dilihat dari kebutuhan industri. Jika mencari lowongan kerja programmer back-end, maka besar kemungkinan lowongan tersebut mensyaratkan harus menguasai PHP hingga framework Laravel. 

Sebagai info tambahan, grafik di atas adalah tingkat popularitas framework PHP di seluruh dunia. 

Gambar: Perbandingan hasil Google Trends 5 framework PHP di Indonesia

Terlihat 2 garis yang saling mengejar, yakni garis biru dan garis merah. Artinya, di Indonesia terdapat 2 buah framework PHP yang sama-sama populer: Laravel dan CodeIgniter. Meskipun di luar negeri Laravel sangat mendominasi, tapi di Indonesia CodeIgniter masih jadi salah satu pilihan framework PHP.

Jika ingin memutuskan fokus ke bidang PHP back-end, maka bisa pelajari 2 framework ini: Laravel dan CodeIgniter. Lowongan kerja keduanya cukup besar. Dari grafik di atas, popularitas CI terlihat terus menurun dalam beberapa tahun terakhir, namun tetap ada perusahaan yang butuh CI terutama untuk me-maintenance kode-kode lama.

Tujuan akhir dari penggunaan framework adalah agar kerjaan cepat selesai, tidak masalah ingin dibuat dengan framework apa saja. Beberapa perusahaan software juga membuat framework khusus yang tidak di-publish.

Pengertian MVC (Model – View – Controller)

Pengertian MVC

MVC adalah sebuah arsitektur perancangan kode program. Tujuannya untuk memecah kode program utama menjadi 3 komponen terpisah dengan tugas yang spesifik. Ketiga komponen tersebut adalah:

  • Pengaksesan database, disebut sebagai Model.
  • Tampilan design (user interface), disebut sebagai View.
  • Alur logika program, disebut sebagai Controller.

Gabungan Model-View-Controller inilah yang disingkat sebagai MVC.

Ide awal dari perlunya konsep MVC adalah agar aplikasi yang dibuat bisa mudah dikelola dan dikembangkan, terutama untuk aplikasi besar.

Sebagai contoh, seorang web designer bisa fokus merancang bagian View saja, yakni tampilan design website yang terdiri dari kode HTML dan CSS plus sedikit JavaScript. Kode program untuk berkomunikasi dengan database bisa ditangani oleh programmer yang secara khusus bagian Model. Serta programmer lain mengatur alur logika program di bagian Controller.

Dengan pemisahan seperti ini, kerja tim menjadi mudah dikelola. Selain itu dengan penerapan konsep MVC yang baik, setiap bagian tidak saling bergantung sama lain. Jika ada perubahan atau modifikasi, cukup edit di bagian yang diperlukan saja, tidak harus merombak ulang semua aplikasi.

Dibalik keunggulan ini, kendala utama dari konsep MVC adalah cukup rumit untuk dipahami (terutama bagi pemula), serta file kode program menjadi banyak karena setiap bagian dari M-V-C harus ditulis dalam file terpisah.

Namun keuntungan yang didapat sebanding dengan “usaha” untuk mempelajari MVC tersebut, karena kode program menjadi lebih fleksibilitas dan mudah dikelola.

Ini adalah contoh alur yang terjadi dalam sebuah aplikasi yang menerapkan konsep MVC. 

Dalam panah 1, setiap interaksi yang dilakukan user akan ditangani oleh controller. Misalnya ketika user mengetik alamat situs www.belajarlavarel.com, maka sebuah controller di server duniailkom akan menangkap “request” tersebut. Atau ketika user selesai mengisi form register dan men-klik tombol submit, file controller akan menerima sebuah proses.

Controller pada dasarnya berisi logika program. Seandainya perlu mengambil data dari database, maka controller akan memanggil Model (panah nomor 2). Model inilah yang bertanggung jawab mengakses database lalu mengembalikan hasilnya kembali ke controller.

Setelah data dari model diterima kembali, controller kemudian meneruskan data tersebut ke dalam View (panah 3). Data ini kemudian diproses sebagai kode HTML dan CSS di dalam view. Inilah yang dilihat oleh user di dalam web browser (panah 4).

Jika user men-klik halaman lain, maka itu akan diproses lagi oleh controller, yakni kembali ke langkah 1, demikian seterusnya alur kerja dari arsitektur MVC.

Dalam praktek arsitektur MVC di Laravel, nantinya juga terdapat komponen bernama Route, yang berfungsi untuk menyesuaikan alamat URL, serta “menyembunyikan” nama file URL. Route ini akan berada di panah 1, yakni tepat sebelum request dari user sampai ke controller.

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...