Autoloading Kelas dalam OOP di PHP
Anda sudah tahu bahwa untuk menggunakan
suatu kelas, kita harus menghubungkannya
melalui require. Ketika dalam proyek
terdapat sangat banyak kelas, maka akan dihasilkan banyak
koneksi, yang sangat tidak nyaman untuk ditulis
dan sulit dikontrol.
Untuk menyelesaikan masalah seperti itu dalam PHP telah ditambahkan autoloading kelas. Autoloading memungkinkan PHP untuk secara otomatis memuat file dengan kelas saat upaya mengakses kelas tersebut dalam kode. Namun, begitu saja kelas tidak akan dimuat - kelas tersebut harus ditempatkan di dalam folder situs dengan cara khusus, mengikuti beberapa kesepakatan tentang penamaan file dan folder kelas. Anda dapat menggunakan kesepakatan yang sudah built-in di PHP, atau membuat sendiri dan menggunakannya.
Mari kita bahas terlebih dahulu kesepakatan standar PHP. Kesepakatan ini terletak pada kenyataan bahwa jika kita memiliki beberapa file dengan kelas, maka jalur melalui folder situs ke file ini harus cocok dengan namespace file, dan nama file harus cocok dengan nama kelas yang disimpan di dalamnya. Pada saat yang sama, nama folder dan file harus dalam huruf kecil.
Mari kita lihat contohnya. Misalkan kita memiliki kelas berikut:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Menurut kesepakatan, kelas ini harus ditempatkan
di folder /core/admin/ dalam file
pagecontroller.php.
Sekarang mari kita di file index.php gunakan
kelas kita, tanpa menghubungkannya melalui require,
namun menggunakan autoloading. Untuk ini di awal
file, di mana kelas dipanggil, seharusnya
memanggil fungsi spl_autoload_register.
Mari kita lakukan ini:
<?php
spl_autoload_register(); // mengaktifkan autoloading
$obj = new Core\Admin\PageController; // dengan tenang membuat objek
?>
Di file index.php aktifkan pemuatan otomatis
kelas. Mengikuti kesepakatan tentang penamaan
folder dan file buatlah kelas Core\User,
kelas Core\Admin\Controller dan kelas
Project\User\Data. Di file index.php
buat objek dari kelas-kelas ini.