Back to IF3110 Pengembangan Aplikasi Berbasis Web
Topic
Questions/Cues
Definisi Framework?
Beda Framework vs Library?
Apa itu Web App Framework?
Apa itu Laravel?
Pola Arsitektur Laravel?
Apa itu MVC?
Struktur Proyek:
app?Struktur Proyek:
public?Struktur Proyek:
resources?Struktur Proyek:
routes?Struktur Proyek:
database?Struktur Proyek:
storage?Struktur Proyek:
vendor?Detail direktori
app?Reference Points
- Slides IF3110-10b-Web-Application-Framework-Laravel.pdf (Slide 1-11)
Definisi Framework
Sebuah Software Framework adalah abstraksi di mana kode yang menyediakan fungsionalitas generik (umum) dapat secara selektif ditimpa (overridden) atau dispesialisasi oleh kode pengguna untuk menyediakan fungsionalitas spesifik.
Framework vs. Library
Perbedaan utamanya terletak pada 4 hal:
Inversion of Control (IoC): Alur program diatur oleh framework, bukan oleh pemanggil (kode kita). Framework-lah yang memanggil kode kita saat dibutuhkan, bukan sebaliknya.
Extensibility: Pengguna dapat memperluas (extend) framework, misalnya dengan override method atau menambah fungsionalitas spesifik.
Non-modifiable Framework Code: Kita seharusnya tidak mengubah kode inti framework. Kita hanya menggunakannya.
Default Behaviour: Framework sudah menyediakan perilaku default (misal: cara menangani request), yang kemudian kita kustomisasi.
Web Application Framework
Sekumpulan tools yang membantu merancang pengembangan aplikasi web, mencakup:
Front-end: Penanganan form, authentication, templating (seperti Blade).
Back-end: Routing, Database ORM (seperti Eloquent).
Mengelola services, resources, dan API.
Laravel: Framework Fokus
Definisi: Sebuah framework web berbasis PHP.
Sejarah: Rilis pertama tahun 2011, lisensi MIT (free, open-source).
Arsitektur: Mengikuti pola arsitektur MVC (Model-View-Controller).
Pola Arsitektur MVC
MVC (Model-View-Controller) adalah pola desain yang memisahkan aplikasi menjadi tiga komponen utama:
Model: Merepresentasikan data dan logika bisnis (misal: interaksi ke database).
View: Merepresentasikan User Interface (UI) atau apa yang dilihat pengguna (misal: halaman HTML).
Controller: Bertindak sebagai perantara antara Model dan View. Menerima input (request) dari pengguna, memprosesnya (mungkin dengan memanggil Model), dan mengirimkan data ke View untuk ditampilkan.
Struktur Proyek (Root Directory)
app/: Kode inti aplikasi. Sebagian besar class kita (Models, Controllers) akan ada di sini.
bootstrap/: Berisi fileapp.phpyang “menyalakan” (bootstraps) framework. Jarang diubah.
config/: Berisi semua file konfigurasi aplikasi (database, session, dll).
database/: Berisi migrations (struktur tabel database), model factories, dan seeds (data dummy).
public/: Folder entry point. Berisi fileindex.php, yang merupakan titik masuk untuk semua request ke aplikasi. Juga tempat menyimpan web assets (CSS, JS, gambar).
resources/: Berisiviews(file template Blade), aset yang belum di-compile (CSS/JS mentah seperti SASS/LESS), dan file bahasa.
routes/: Definisi rute aplikasi.
web.php: Rute untuk web (menggunakan session, CSRF, cookie).
api.php: Rute untuk API (stateless, diautentikasi via token).
console.php: Perintah console kustom (Artisan).
channels.php: Rute untuk event broadcasting (seperti WebSockets).
storage/: Berisi logs, cache (Blade yang sudah di-compile, file session, cache file), dan file lain yang di-generate framework.
tests/: Berisi automated tests (PHPUnit).
vendor/: Berisi dependensi Composer (semua library pihak ketiga yang diinstal).Fokus: Direktori
app/Ini adalah “otak” aplikasi kita, berisi sub-direktori penting:
Http/: Berisi Controllers, Middleware, dan Form Requests. Semua logika untuk menangani request HTTP masuk diletakkan di sini.
Models/: Berisi semua class Eloquent Model (representasi tabel database).
Console/: Berisi perintah Artisan kustom yang kita buat.Class di dalam
app/di-autoload secara otomatis oleh Composer.
Laravel adalah framework web PHP modern yang menerapkan pola arsitektur MVC (Model-View-Controller). Perbedaan utama framework dengan library adalah Inversion of Control (IoC), di mana framework-lah yang mengatur alur aplikasi. Laravel menyediakan struktur direktori yang terorganisir dengan jelas:
routes/mendefinisikan URL,public/(denganindex.php) bertindak sebagai entry point,app/Http/Controllers/menangani logika request,app/Models/mengurus data (ORM), danresources/views/berisi template (Blade) untuk ditampilkan ke pengguna.
Additional Information
Topik Teknis: Alur Request di Laravel (Siklus Hidup)
Memahami struktur folder di atas membantu memvisualisasikan alur request dasar di Laravel:
Pengguna mengunjungi
/user/1di browser.Request masuk melalui
public/index.php.Laravel memuat framework (dari
bootstrap/app.php).Laravel mencari rute yang cocok di
routes/web.php. Ia menemukan rute:Route::get('/user/{id}', [UserController::class, 'show']);Laravel memanggil method
showdi dalamapp/Http/Controllers/UserController.php.Di dalam Controller, Anda mungkin memanggil Model:
User::find(1);(dariapp/Models/User.php). Model ini mengambil data dari database.Controller kemudian mengembalikan View:
return view('user.profile', ['user' => $user]);Laravel mengambil template dari
resources/views/user/profile.blade.php, memasukkan data$userke dalamnya.HTML yang sudah di-render dikirim kembali sebagai respons ke browser pengguna.
Topik Teknis: Composer dan
vendor/Direktori
vendor/sangat penting. Laravel sendiri, dan library lain yang digunakannya, diinstal sebagai “dependensi” melalui manajer paket PHP yang disebut Composer. Anda tidak pernah mengedit file divendor/secara manual. Jika Anda ingin update Laravel atau library lain, Anda menjalankan perintahcomposer update.Topik Teknis: Artisan CLI
Framework modern seperti Laravel hadir dengan Command-Line Interface (CLI) untuk mempermudah pengembangan. Di Laravel, ini disebut Artisan. Kita bisa membuat file-file MVC dengan cepat menggunakan perintah seperti:
php artisan make:controller UserController
php artisan make:model User
php artisan make:migration create_users_table