spl_autoload_register()
memungkinkan Anda untuk mendaftarkan banyak fungsi (atau metode statis dari kelas Autoload Anda sendiri) yang akan dimasukkan PHP ke dalam tumpukan / antrian dan memanggil secara berurutan ketika "Kelas baru" dideklarasikan.
Jadi misalnya:
spl_autoload_register('myAutoloader');
function myAutoloader($className)
{
$path = '/path/to/class/';
include $path.$className.'.php';
}
//-------------------------------------
$myClass = new MyClass();
Pada contoh di atas, "MyClass" adalah nama kelas yang Anda coba instantiate, PHP meneruskan nama ini sebagai string spl_autoload_register()
, yang memungkinkan Anda untuk mengambil variabel dan menggunakannya untuk "memasukkan" kelas / file yang sesuai . Akibatnya Anda tidak perlu secara khusus menyertakan kelas itu melalui pernyataan sertakan / memerlukan ...
Cukup panggil saja kelas yang ingin Anda instantiate seperti pada contoh di atas, dan karena Anda mendaftarkan fungsi (via spl_autoload_register()
) Anda sendiri yang akan mencari tahu di mana semua kelas Anda berada, PHP akan menggunakan fungsi itu.
Manfaat menggunakan spl_autoload_register()
adalah tidak seperti __autoload()
Anda tidak perlu menerapkan fungsi pengisian otomatis di setiap file yang Anda buat. spl_autoload_register()
Anda juga dapat mendaftarkan beberapa fungsi pengisian otomatis untuk mempercepat autoloading dan membuatnya lebih mudah.
Contoh:
spl_autoload_register('MyAutoloader::ClassLoader');
spl_autoload_register('MyAutoloader::LibraryLoader');
spl_autoload_register('MyAutoloader::HelperLoader');
spl_autoload_register('MyAutoloader::DatabaseLoader');
class MyAutoloader
{
public static function ClassLoader($className)
{
//your loading logic here
}
public static function LibraryLoader($className)
{
//your loading logic here
}
Sehubungan dengan spl_autoload , manual menyatakan:
Fungsi ini dimaksudkan untuk digunakan sebagai implementasi standar untuk __autoload()
. Jika tidak ada yang ditentukan dan spl_autoload_register()
dipanggil tanpa parameter apa pun maka fungsi ini akan digunakan untuk panggilan selanjutnya __autoload()
.
Dalam istilah yang lebih praktis, jika semua file Anda berada dalam satu direktori dan aplikasi Anda tidak hanya menggunakan file .php, tetapi file konfigurasi khusus dengan ekstensi .inc misalnya, maka salah satu strategi yang dapat Anda gunakan adalah menambahkan direktori Anda yang berisi semua file ke jalur sertakan PHP (via set_include_path()
).
Dan karena Anda juga memerlukan file konfigurasi, Anda akan gunakan spl_autoload_extensions()
untuk membuat daftar ekstensi yang Anda inginkan dari PHP.
Contoh:
set_include_path(get_include_path().PATH_SEPARATOR.'path/to/my/directory/');
spl_autoload_extensions('.php, .inc');
spl_autoload_register();
Karena spl_autoload adalah implementasi default __autoload()
metode sulap, PHP akan memanggil spl_autoload ketika Anda mencoba dan membuat instance kelas baru.
Semoga ini membantu...