Khoerodin Developer, writer, and maker |

Developer, writer, and maker

Class Autoloader dalam OOP PHP - Ep. 7

Suatu hal yang tidak efisien ialah jika kita akan akan menggunakan banyak class, kita membuat setiap class dalam satu file tersendiri dan jika akan menggunakannya kita meng-include-kan satu per satu file class pada permulaan baris kode. Ini bukan masalah jika hanya melakukan include satu, dua atau lima file, tapi jika puluhan? ratusan bahkan lebih?

Mulai PHP 5 masalah itu sudah bisa diatasi dengan mudah. Misal kita membuat sebuah class Name dan disimpan dalam file Name.php:

<?php
class Name {

    function showName($name)
    {
    	echo 'Nama saya ' . $name . ' ';
    }

}

Buat lagi class yaitu class Address dan disimpan dalam file Address.php.

<?php
class Address {

    function showAddress($address)
    {
    	echo 'Alamat saya ' . $address;
    }

}

Selanjutnya kita panggil dua buah class tersebut dalam satu file index.php

<?php
include 'Name.php';
$name = new Name();
$name->showName('Khoerodin');

include 'Address.php';
$address = new Address();
$address->showAddress('Ciamis');

Jika kode diatas dijalankan maka akan menghasilkan output Nama saya Khoerodin Alamat saya Ciamis. Kode tersebut benar alias tidak ada yang salah, namun seperti yang saya tulis di awal, bagaimana jika classnya puluhan bahkan ratusan? tentu akan merepotkan. Kita ubah index.php jadi seperti ini:

<?php
spl_autoload_register(function ($class) {
    include $class . '.php';
});

$name = new Name();
$name->showName('Khoerodin');

$address = new Address();
$address->showAddress('Ciamis');

Coba jalankan kode tersebut. Ya inilah solusinya, kita tidak usah repot-repot meng-include satu per satu file class yang dibutuhkan karena akan repot jika class yang dibutuhkan tidak sedikit. Dengan ini PHP otomatis akan memanggil/melakukan include ketika new Class() dideklarasikan.

spl_autoload_register() fungsinya untuk meregister function atau static method yang berisi class, selanjutnya apabila ada class yang diinstansiasi menggunakan new Class() PHP akan melakukan antrian (queue/stack) dan memanggilnya secara berurutan.

Mudah bukan? 🤩 ayo tetap semangaaat 💪💪💪.