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:

  1. Inversion of Control (IoC): Alur program diatur oleh framework, bukan oleh pemanggil (kode kita). Framework-lah yang memanggil kode kita saat dibutuhkan, bukan sebaliknya.

  2. Extensibility: Pengguna dapat memperluas (extend) framework, misalnya dengan override method atau menambah fungsionalitas spesifik.

  3. Non-modifiable Framework Code: Kita seharusnya tidak mengubah kode inti framework. Kita hanya menggunakannya.

  4. 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:

  1. Model: Merepresentasikan data dan logika bisnis (misal: interaksi ke database).

  2. View: Merepresentasikan User Interface (UI) atau apa yang dilihat pengguna (misal: halaman HTML).

  3. 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 file app.php yang “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 file index.php, yang merupakan titik masuk untuk semua request ke aplikasi. Juga tempat menyimpan web assets (CSS, JS, gambar).

  • resources/: Berisi views (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.

Summary

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/ (dengan index.php) bertindak sebagai entry point, app/Http/Controllers/ menangani logika request, app/Models/ mengurus data (ORM), dan resources/views/ berisi template (Blade) untuk ditampilkan ke pengguna.