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.
Tantangan
MudahMari 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 classProductdalam namespaceApp\Models. Class ini harus memiliki propertypublic $namedanpublic $price, constructor yang menerima dan menetapkan kedua nilai tersebut, serta methodgetInfo()yang mengembalikan"[name]: $[price]".src/Models/Customer.php: Definisikan classCustomerdalam namespaceApp\Models. Class ini harus memiliki propertypublic $name, constructor yang menerima dan menetapkan nama, serta methodgreet()yang mengembalikan"Welcome, [name]!".vendor/autoload.php: Buat autoloader sederhana menggunakanspl_autoload_registeryang meniru perilaku Composer. Autoloader ini harus memetakan awalan namespaceApp\ke direktorisrc/, mengubah pemisah namespace menjadi pemisah direktori, lalu menambahkan.phpuntuk memuat file yang benar.index.php: Ini adalah file titik masukmu. Muat autoloader darivendor/autoload.phpdengan satu baris, lalu gunakan kata kunciuseuntuk mengimporApp\Models\ProductdanApp\Models\Customer. BuatProductdengan nama"Laptop"dan harga999, sertaCustomerdengan nama"Alice". Cetak hasil pemanggilangreet()pada customer dangetInfo()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
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengenalan OOPclass vs objectKata Kunci $thismethodpropertyConstructor (__construct)Destructor (__destruct)Ringkasan: Kalkulator Sederhana4Pewarisan
Pewarisan DasarKata Kunci parent::Penimpaan methodKata Kunci finalClass AbstrakRingkasan: Hierarki Karyawan7Enkapsulasi
Public, Protected, PrivateModifier Akses secara MendalamGetter dan SetterPenyembunyian InformasiPromosi Constructor (8.0)Ulasan: Sistem Catatan Siswa2Namespace dan Autoloading
Pengenalan NamespaceKata Kunci useStandar Autoloading PSR-4Autoloader ComposerRingkasan: Proyek yang Terorganisasi5Interface dan Kontrak
Pengenalan InterfaceMengimplementasikan InterfaceImplementasi Beberapa InterfaceInterface vs Abstract ClassPetunjuk Tipe dengan InterfaceRekap: Kalkulator Bentuk8Magic Methods
Pengantar Magic Methods__toString & __debugInfo__get, __set, __isset, __unset__call & __callStatic__clone & Cloning Object__serialize & __unserializeRingkasan: Koleksi Kustom11Sistem Tipe Data dan Penanganan Error
Deklarasi TipeTipe NullableTipe Union dan IntersectionClass ExceptionHierarki Exception KustomTry, Catch, FinallyRekap: Validator Form3Property dalam class
Property instance vs staticKonstanta dalam classMethod & property staticProperty private & protectedProperty readonly (PHP 8.1)Ulasan: Pengelola Rekening Bank6Polimorfisme
Meninjau Kembali Method OverridingPolimorfisme melalui AntarmukaPetunjuk Tipe dan Tipe UnionPengikatan Statis TertundaRangkuman: Pemroses PembayaranLatihan sendiri: Compiler PHP online