Cara Autoload Kelas PHP dengan Ruang Nama
Penjelasan Masalah:
Percubaan untuk menggunakan ruang nama dengan autoloading boleh mengakibatkan ralat berikut:
<code class="php">Fatal error: Class 'Class1' not found in /usr/local/www/apache22/data/public/php5.3/test.php on line 10</code>
Penyelesaian:
Pastikan kelas yang ditakrifkan dalam ruang nama tidak diisytiharkan dalam skop global. Gunakan autoloader untuk memuatkan definisi kelas secara dinamik berdasarkan ruang nama dan nama kelasnya.
Kod Kemas Kini:
<code class="php">// Class1.php namespace Person\Barnes\David; class Class1 { public function __construct() { echo __CLASS__; } } // test.php spl_autoload_register(function ($class) { $parts = explode('\', $class); require end($parts) . '.php'; }); use Person\Barnes\David as MyPerson; $class = new MyPerson\Class1();</code>
Penjelasan:
Dalam kod yang dikemas kini, kami menggunakan spl_autoload_register() untuk autoload kelas. Fungsi autoloader membahagikan nama kelas kepada komponen ruang namanya dan memuatkan fail yang sepadan dengan definisi kelas.
Nota:
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Pemuatan Kelas Apabila Menggunakan Ruang Nama PHP dengan Autoloading?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!