Tuesday, 31 May 2016

Struktur Aplikasi Pada Laravel 5



Root Directory
Merupakan directory yang berisi seluruh aplikasi laravel baik folder maupun files system pada Laravel Framework

App Direktori ini merupakan direktori yang dibuat secara khusus untuk menyimpan seluruh file-file yang berkaitan dengan proses request dan response Http. Dikretori ini memiliki tiga buah sub direktori yang diantaranya adalah “Controllers”, “Middleware” dan “Requests”. Berikut ini adalah penjelasan mengenai fungsi dari ketiga buah sub direktori tersebut:
  1. app/Http/Controllers: Direktori ini digunakan untuk menyimpan seluruh class Controller yang kita buat seperti misalnya ProductController.php, SalesController.php, dll.
  2. 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. Untuk penjelasan lengkapnya tentang middleware bisa baca dokumentasinya disini.
  3. 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. Untuk penjelasan lebih lanjut terkait penggunaan validator pada laravel, bisa dibaca dokumentasinya disini.
bootstrapDirektori bootstrap berisi beberapa file bootstrap framework yang  mengkonfigurasi autoloading, serta direktori cache yang berisi beberapa file yang digenerate oleh framework untuk mengoptimasi kinerja aplikasi yang dihasilkan. 

configDirektori config, seperti namanya, berisi semua file konfigurasi aplikasi Anda.

database 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. Untuk penjelasan lebih lanjut terkait fitur migration pada laravel silahkan baca dokumentasinya disini.

PublicMerupakan direktory frontend controller dan assets yang dipergunakan oleh aplikasi (images, JavaScript, CSS, etc.). untuk dipergunakan secara publik

ResourcesBerisi Views dari aplikasi, raw assets(LESS, SASS, CoffeeScript) dan file assets lainnya

StorageMerupakan direktori penyimpanan berisi dikompilasi template Blade, sesi file berbasis, cache berkas, dan file lain yang dihasilkan oleh framework. Direktori ini dipisahkan menjadi direktori aplikasi, framework, dan log. Direktori aplikasi dapat digunakan untuk menyimpan file yang dimanfaatkan oleh aplikasi Anda. Direktori framework digunakan untuk menyimpan kerangka yang dihasilkan file dan cache. Pada akhirnya, direktori log ini akan berisi file-file log aplikasi Anda.
 
TestBerisi tes otomatis aplikasi Anda. Contohnya PHPUnit 

VendorBerisi dependensi Composer Anda.

.env
Laravel 5 menggunakan PHP .env, untuk mengatur beberapa konfigurasi dengan aturan tertentu. File ini merupakan file yang cukup penting. File ini merupakan template untuk konfigurasi environment yang disarankan untuk kita saat menangani konfigurasi yang sensitif di Laravel. Sebuah file bernama .env.example sudah tersedia pada root folder project kita. Jika dibutuhkan, kita bisa menggunakan file tadi mengubah isinya sesuai kebutuhan (Untuk menggunakan template tersebut, kita harus merename .env.example menjadi .env). Ketika bekerja pada sebuah aplikasi, dan kita ingin membuat berkas .env yang akan diisi value key konfigurasi seperti username database, password database, token jaringan sosial, data rahasia dan sebagainya.
File .env ini secara eksplisit diatur untuk diabaikan oleh file .gitignore yang artinya bahwa kita sebagai developer bisa menyimpan berbagai informasi sensitif ke dalam file ini dan tidak akan ikut dibocorkan saat kita mempublikasikan aplikasi kita ke github ataupun saat dikirimkan ke pelanggan.


.gitattributes
Berisi list folder atau file yang menggunakan Git. Buat yang masih asing sama Git, Git sendiri adalah software bantu, yang memungkinkan sebuah tim bekerja sama dan dapat menggunakan file yang sama. Git ini sangat berguna untuk membantu mengatasi beberapa kendala yang sering terjadi ketika beberapa orang mengedit file yang sama. Ini akan sangat berguna terutama jika beberapa developer menggunakan sistem operasi yang berbeda-beda untuk membangun project yang sama.
.gitignore
Masih terkait dengan Git, file ini menangani normalisasi teks dalam Git.
app
Ini merupakan folder aplikasi kita. Di folder inilah nanti kita akan menyimpan seluruh logika yang berhubungan dengan aplikasi kita. Folder ini berisi banyak kode yang digunakan untuk aplikasi kita, termasuk pula di dalamnya model, controller, dan middleware. Kita akan menghabiskan sebagian besar waktu kita saat develop di folder ini.
artisan
Artisan adalah command-line milik Laravel yang dapat kita gunakan untuk mempercepat proses develop aplikasi seperti untuk membuat controller baru, mengatur perubahan database (menggunakan migration), dan membersihkan cache aplikasi.
composer.json
Composer adalah nama salah satu aplikasi PHP package manager yang cukup populer dan digunakan ribuan developer di seluruh dunia untuk mengintegrasikan dengan cepat third-party yang populer seperti Swift Mailer ataupun Doctrine ke aplikasi php. Laravel mendukung penuh software Composer dan file composer.json digunakan untuk mengidentifikasi package yang ingin kita integrasikan ke aplikasi Laravel kita.
composer.lock
File ini berisi informasi tentang status penginstallan package Composer yang terakhir diinstal/diupdate. Seperti pada folder bootstrap, kita akan sangat jarang berinteraksi langsung dengan file ini.

gulpfile.js
Laravel 5 memperkenalkan sebuah fitur baru bernama Laravel Elixir. Gulpfile.js digunakan Elixir untuk mendefinisikan berbagai Gulp.js, sebuah perintah yang digunakan Elixir untuk membangun berbagai proses secara otomatis yang berhubungan dengan CSS, Javascript, tests, dan aset lain dalam project kita.
package.json
File ini digunakan Elixir untuk menginstal Elixir dan berbagai file dependencies yang dibutuhkannya.
phpspec.yml
File ini berisi beberapa konfigurasi yang digunakan PHPSpec.

phpunit.xml
File ini berisi konfigurasi PHPUnit testing yang memberitahu step by step application tests. Dari review-review penggunaannya PHPUnit ini adalah cara ternyaman untuk kita selaku developer untuk menulis unit tests.
Mungkin itu yang bisa kita bahas tentang struktur aplikasi laravel, setidaknya untuk memulai sesuatu yang besar, setidaknya dimulai dengan mempelajari hal terkecil terlebih dahulu, dalam hal ini struktur dasar aplikasi, sehingga kedepannya akan lebih memudahkan kita dalam mengembangkan aplikasi yang akan kita buat, Bisa itu karena terbiasa, Selamat Berkreatifitas...

referensi:
Dokumentasi Resmi Laravel https://laravel.com/docs/5.2

No comments:

Post a Comment