Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menggunakan fungsi spl_autoload_register() dan __autoload() dalam PHP?
Dalam artikel sebelumnya, saya membawakan anda "Bagaimana untuk menentukan sama ada objek tergolong dalam kelas dalam PHP? ", yang memperincikan pengetahuan berkaitan yang harus digunakan untuk menentukan sama ada objek tergolong dalam kelas dalam PHP. Dalam artikel ini, kita akan melihat mekanisme pemuatan automatik dalam PHP. Semoga ia membantu semua orang!
Dalam pembangunan dan penggunaan harian, idea asas pengaturcaraan berorientasikan objek kami adalah kebiasaan untuk mencipta fail sumber PHP yang berasingan untuk setiap kelas kes ini Ia menyediakan kemudahan untuk penyelenggaraan seterusnya dan juga memudahkan untuk menggunakan semula kelas.
Dalam PHP, fungsi pemuatan automatik kelas boleh dilaksanakan melalui fungsi spl_autoload_register()
dan __autoload()
, yang boleh menjimatkan masa dan tenaga pengaturcaraan kami. Kemudian mari perkenalkan kedua-dua fungsi ini secara berasingan.
<span style="font-size: 20px;"><strong><span style="font-size: 18px;">__autoload()</span></strong></span>
Fungsi
__autoload()
Fungsi ialah kaedah ajaib yang tepat, kami Dalam "Membawa anda untuk memahami kaedah ajaib dalam PHP dalam lima minit (contoh terperinci)", beberapa kaedah sihir yang biasa digunakan diperkenalkan secara terperinci Ia disebut secara automatik, iaitu, ia memerlukan keadaan tertentu Fungsi akan dipanggil seterusnya.
Apabila kami baharu kelas, jika kelas itu tidak ditemui dalam fail sumber semasa, PHP secara automatik akan memanggil fungsi __autoload()
dan menghantar nama kelas kepada fungsi __autoload(). Ini ialah syarat khusus untuk fungsi __autoload() dipanggil. Format sintaksnya adalah seperti berikut:
function __autoload($class){ // 方法体 }
Apa yang perlu kita perhatikan ialah:
$class
ialah nama kelas yang akan dimuatkan.
__autoload()
Fungsi hanya boleh ditakrifkan sekali dalam fail sumber semasa.
Jika anda ingin menggunakan fungsi __autoload()
untuk memuatkan fail kelas secara automatik, nama fail kelas perlu sama dengan nama kelas sahaja ditakrifkan dalam fail kelas lain.
Seterusnya mari kita lihat penggunaan fungsi __autoload() melalui contoh seperti berikut:
<?php function __autoload($class){ $file = './'.$class.'.php'; include_once($file); } $obj = new Demo(); ?>
Jalankan kod di atas dan perkara yang sama. direktori akan dimuatkan secara automatik. Fail Demo.php di bawah Demo.php, kod dalam Demo.php adalah seperti berikut:
<?php class Demo{ } ?>
Apa yang perlu kita perhatikan ialah: fungsi __autoload() telah ditamatkan sejak PHP7.2.0, anda boleh menggunakan fungsi spl_autoload_register () sebaliknya.
<span style="font-size: 20px;"><strong><span style="font-size: 18px;">spl_autoload_register()</span></strong></span>
spl_autoload_register()
Fungsi
spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])Fungsi spl_autoload_register() boleh menentukan fungsi untuk menggantikan fungsi fungsi __autoload(),
$autoload_function
Apa yang perlu diberi perhatian ialah:
$throw
: Nama fungsi untuk menggantikan fungsi __autoload() atau ia boleh menjadi fungsi tanpa nama. Jika tiada parameter disediakan, fungsi pelaksanaan lalai spl_autoload() autoload didaftarkan secara automatik
$prepend
: digunakan untuk menetapkan sama ada fungsi spl_autoload_register() melontar apabila $autoload_function tidak boleh; berjaya didaftarkan. ekor barisan.
Seterusnya mari kita lihat contoh contohnya seperti berikut:
<?php spl_autoload_register('loadClass'); function loadClass($class){ $file = './'.$class.'.php'; include_once($file); } $obj = new Demo(); ?>
Dalam contoh di atas, fungsi spl_autoload_register() digunakan untuk menentukan. fungsi lain untuk menggantikan fungsi __autoload().
Jika anda berminat, anda boleh klik pada "Tutorial Video PHP" untuk mengetahui lebih lanjut tentang pengetahuan PHP.
Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi spl_autoload_register() dan __autoload() dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!