Autoloading Pengganti Include Pada OOP PHP

1. Pendahuluan 

Halo teman-teman semua. Jumpa lagi dibelajar web medan. jangan lupa dukung kami dengan subscribe channel youtube kami.  Kali ini kita akan belajar autoloading pada PHP.  Sebelum kita implementasikan baiknya saya jelaskan lebih dulu untuk apa autoloading.

Pada implementasi oop, jika kita ingin menggunakan sebuah kelas dalam file lain maka kita harus meng-include-kan file tersebut. Nah kalau file atau kelas tersebut banyak. Tentu saja akan repot bukan. Nah disinilah fungsi autoloading.

Aoutoloading adalah fungsi yang digunakan untuk menjalankan atau meng-include-kan kelas-kelas secara lebih sederhana. Fungsi yang digunakan untuk autoloading adalah.

spl_autoload_register("fungsi");

2. Contoh Program

Untuk menerapkan fungsi autoloading atau otomatis dimuat, kita perlu membuat prototype projek. Perhatikan struktur folder projek berikut.


Pada folder projek di atas ada tiga kelas yang mau kita muat otomatis. Yaitu KelasA, KelasA1, dan KelasB. Dengan kata lain, kita ingin memuat otomatis semua kelas yang ada pada folder a dan folder b.

Jika kita ingin melakukan include secara manual maka caranya cukup dengan melakukan include atau required. Perbedaan include dan required ada pada artikel lain blog ini.


//index.php
include "a/KelasA.php";
include "a/KelasA1.php";
include "b/KelasB.php";

$kelasA=new KelasA;
echo "<br>";
$kelasA1=new KelasA1;
echo "<br>";
$kelasB=new KelasB;

Pada kode program diatas, semua file atau kelas yang dibutuhkan harus di include terlebih dulu. Kalau ada file lain yang ingin di include maka tambah lagi baris include nya. Tentunya ini sangat merepatotkan bukan. Disamping kita ingin menerapkan konsep modular kita juga mendapatkan kesulitan. Akan tetapi masalah ini teratasi dengan Autoloading.

//init.php

<?php
function loadFolderA($class){
$file = "a/{$class}.php";
    if (is_readable($file)) {
        include $file;
    }
}

function loadFolderB($class){
$file = "b/{$class}.php";
    if (is_readable($file)) {
        include $file;
    }
}

spl_autoload_register("loadFolderA");
spl_autoload_register("loadFolderB");

Agar file index.php tidak terlalu ramai, saya meletakkan fungsi autoloading pada file init.php. Pada kode program di atas. Fungsi spl_autoload_register("loadFolderA"); tampak ada fungsi lain yang dijalankan oleh spl_autoload_register(); yaitu loadFolderA. Fungsi tersebutlah yang akan menjalankan seluruh file yang ada difolder tersebut. Begitu juga dengan loadFolderB.

Artinya, jika kita menggunakan fungsi autoloading ini. Maka kita tidak perlu meng-include-kan lagi kelas baru. Karena kelas apapun di folder tersebut akan di include kan.

Sebagai catatan. Usahakan nama file sama dengan nama kelas. sehingga kita tidak perlu mengecek nama kelas lagi. Sekarang filde index.php hanya perlu meng include kan file init.php saja.

//index.php

<?php
include "init.php";

$kelasA=new KelasA;
echo "<br>";
$kelasA1=new KelasA1;
echo "<br>";
$kelasB=new KelasB;

Pada kode program di atas. File index.php menjadi lebih sederhana dengan hanya meng include kan file init.php.  Selanjutkan filde index.php berhak untuk membuat objek dari kelas-kelas yang telah di muat otomatis tersebut.

Sedangkan untuk isi file KelasA.php, KelasA1.php dan KelasB.php adalah sebagai berikut.

//KelasA.php

<?php
class KelasA
{
function __construct()
{
echo "Ini adalah pesan dari kelasA";
}
}

//KelasA1.php

<?php
class KelasA1
{
function __construct()
{
echo "Ini adalah pesan dari kelasA1";
}
}

//KelasB.php

<?php
class KelasB
{
function __construct()
{
echo "Ini adalah pesan dari kelasB";
}
}

Sehingga. Jika file index.php dijalankan. Maka tampilah hasil fungsi constructor dari masing-masing objek yang dicetak. Berikut adalah tampilan hasil file index.php di atas.

Pada tampilan di atas dapat dilihat hasil dari ketiga kelas. Kesimpulannya dengan menggunakan autoloading kita tidak perlu meng include kan file satu per satu lagi.Terima kasih sudah membaca artikel ini. Lebih dan kurang saya mohon maaf.

Popular posts from this blog

Cara Menggunakan Template Admin LTE Sebagai Template Web Dinamis

Aplikasi CRUD menggunakan Template Admin LTE

Cara membuat Link ke Halaman lain dan Link ke bagian Halaman