⊗ppOpNsCA 107 of 107 menu

Fungsi Kustom untuk Autoload Kelas dalam OOP di PHP

Seringkali autoload bawaan mungkin tidak memenuhi kebutuhan Anda karena alasan tertentu. Dalam kasus seperti ini, Anda dapat membuat autoload Anda sendiri.

Untuk melakukannya, Anda perlu meneruskan fungsi callback yang Anda tulis sebagai parameter pertama ke fungsi spl_autoload_register. Fungsi ini akan dipanggil ketika PHP mendeteksi akses ke kelas yang belum dimuat. Nama kelas dengan namespace-nya akan diperoleh oleh parameter fungsi ini:

<?php spl_autoload_register(function($class) { // variabel $class akan berisi nama kelas dengan namespace }); ?>

Dan tugas fungsi ini adalah memuat kelas tersebut melalui require berdasarkan nama kelas. Artinya, di dalam fungsi ini kita harus menuliskan aturan kita sendiri untuk memuat kelas, yaitu konvensi penamaan kita sendiri.

Mari kita tulis contoh autoload kustom. Misalnya, kita menetapkan bahwa path ke file kelas dari root situs akan sama dengan namespace-nya, tetapi dengan mempertahankan *case* karakter.

Artinya, jika kita memiliki kelas Core\Admin\PageController, maka path-nya harus Core/Admin/PageController.php.

Seperti yang Anda lihat, untuk mengubah nama kelas dengan namespace-nya, kita hanya perlu mengganti *backslash* dengan *slash*, dan menambahkan .php ke nama kelas. Mari kita lakukan ini:

<?php spl_autoload_register(function($class) { $filename = str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

Akan tetapi, kita akan mendapatkan path relatif ke file (relatif terhadap root situs). Lebih baik membuat path absolut, seperti ini:

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $filename = $root . '/' . str_replace('\\', '/', $class) . '.php'; require($filename); }); ?>

Ada satu nuansa lagi. Di sistem operasi yang berbeda, path folder mungkin menggunakan slash miring ke depan atau slash miring ke belakang. Mari kita buat kode kita independen dari sistem operasi. Untuk melakukannya, alih-alih slash miring ke depan untuk memisahkan path, kita akan menggunakan konstanta DIRECTORY_SEPARATOR, yang berisi slash yang benar untuk sistem operasi di mana skrip kita sedang dijalankan. Hasilnya, kita mendapatkan kode berikut:

<?php spl_autoload_register(function($class) { $root = $_SERVER['DOCUMENT_ROOT']; $ds = DIRECTORY_SEPARATOR; $filename = $root . $ds . str_replace('\\', $ds, $class) . '.php'; require($filename); }); ?>

Ujilah fungsi autoload yang saya buat.

Ciptakan aturan autoload Anda sendiri dan implementasikan.

Indonesia
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan cookie untuk operasi situs, analitik, dan personalisasi. Pemrosesan data dilakukan sesuai dengan Kebijakan Privasi.
terima semua atur tolak