Menu
CoddyTech

Autoloader Composer

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan PHP di Coddy. Pelajaran 13 dari 91.

Membuat autoloader sendiri bisa dilakukan, tetapi proyek PHP sungguhan menggunakan Composer untuk menangani pemuatan otomatis. Composer membaca konfigurasi proyekmu dan membuat autoloader yang dioptimalkan sesuai standar PSR-4.

Konfigurasi berada di file composer.json di root proyekmu. Berikut cara menentukan aturan autoload:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

Ini memberi tahu Composer bahwa class apa pun yang diawali dengan App\ harus dimuat dari direktori src/. Setelah menyiapkan ini, Composer membuat file autoloader di direktori vendor/.

Untuk menggunakan autoloader Composer, kamu hanya perlu satu baris di bagian atas file entry-mu:

<?php
require 'vendor/autoload.php';

use App\Models\User;
use App\Services\Logger;

$user = new User("Alice");
$logger = new Logger();

Satu pernyataan require itu menangani pemuatan semua class di seluruh proyekmu. Kamu bisa menentukan beberapa pemetaan namespace jika diperlukan:

{
    "autoload": {
        "psr-4": {
            "App\\": "src/",
            "Tests\\": "tests/"
        }
    }
}

Inti Penting: Autoloader Composer menghilangkan kebutuhan untuk menyertakan file secara manual dan memastikan pemuatan class yang konsisten di seluruh proyekmu. Ini adalah pendekatan standar yang digunakan oleh hampir semua aplikasi dan framework PHP modern.

challenge icon

Tantangan

Mudah

Mari kita buat aplikasi kecil yang menggunakan pendekatan pemuatan otomatis Composer untuk mengatur class di beberapa file. Kamu akan menyimulasikan cara proyek PHP sungguhan menyusun kodemu dengan namespace PSR-4 dan autoloader pusat.

Kamu akan membuat empat file yang bekerja bersama:

  • src/Models/Product.php: Definisikan class Product dalam namespace App\Models. Class ini harus memiliki property public $name dan public $price, constructor yang menerima dan menetapkan kedua nilai tersebut, serta method getInfo() yang mengembalikan "[name]: $[price]".
  • src/Models/Customer.php: Definisikan class Customer dalam namespace App\Models. Class ini harus memiliki property public $name, constructor yang menerima dan menetapkan nama, serta method greet() yang mengembalikan "Welcome, [name]!".
  • vendor/autoload.php: Buat autoloader sederhana menggunakan spl_autoload_register yang meniru perilaku Composer. Autoloader ini harus memetakan awalan namespace App\ ke direktori src/, mengubah pemisah namespace menjadi pemisah direktori, lalu menambahkan .php untuk memuat file yang benar.
  • index.php: Ini adalah file titik masukmu. Muat autoloader dari vendor/autoload.php dengan satu baris, lalu gunakan kata kunci use untuk mengimpor App\Models\Product dan App\Models\Customer. Buat Product dengan nama "Laptop" dan harga 999, serta Customer dengan nama "Alice". Cetak hasil pemanggilan greet() pada customer dan getInfo() pada produk, masing-masing pada barisnya sendiri.

Konsep utamanya adalah index.php hanya memerlukan satu pernyataan require untuk memuat autoloader. Setelah itu, semua class dimuat secara otomatis saat kamu menggunakannya. Beginilah cara kerja framework dan aplikasi PHP modern dengan Composer.

Coba sendiri

<?php
// TODO: Muat autoloader dari vendor/autoload.php

// TODO: Gunakan kata kunci 'use' untuk mengimpor App\Models\Product

// TODO: Gunakan kata kunci 'use' untuk mengimpor App\Models\Customer

// TODO: Buat Product dengan nama "Laptop" dan harga 999

// TODO: Buat Customer dengan nama "Alice"

// TODO: Cetak hasil greet() milik customer

// TODO: Cetak hasil getInfo() milik product
?>
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler PHP online