Memuat Auto Ruang Nama PHP
Apabila menggunakan ruang nama PHP dan pemuatan automatik, anda mungkin menghadapi ralat menyatakan "Kelas tidak ditemui." Isu ini timbul apabila kelas yang dirujuk tidak berada dalam skop global.
Masalah:
Dalam kod contoh anda, ralat "Kelas 'Kelas1' tidak ditemui" berlaku kerana kelas Class1 ditakrifkan dalam ruang nama PersonBarnesDavid. Walau bagaimanapun, pernyataan penggunaan dalam test.php hanya mengimport alias ruang nama "MyPerson" tetapi tidak menyatakan lokasi ruang nama khusus kelas Class1.
Penyelesaian:
Untuk menyelesaikan isu ini, anda perlu mengubah suai fungsi __autoload anda untuk memuatkan kelas yang tidak berada dalam skop global. Berikut ialah dua pendekatan:
Dengan Alias:
<code class="php">function __autoload($class) { // Adapt this depending on your directory structure $parts = explode('\', $class); require end($parts) . '.php'; } use Person\Barnes\David as MyPerson; $class = new MyPerson\Class1();</code>
Pendekatan ini menggunakan alias, "MyPerson," untuk merujuk kepada ruang nama PersonBarnesDavid dan memerlukan Kelas1 yang betul fail secara eksplisit.
Tanpa Alias:
<code class="php">use Person\Barnes\David\Class1; $class = new Class1();</code>
Pendekatan ini secara langsung mengimport kelas Kelas1 daripada ruang nama penuhnya, tanpa menggunakan alias.
Dengan melaksanakan salah satu daripada penyelesaian ini, anda boleh memastikan bahawa autoloader anda memuatkan kelas PHP yang ditakrifkan dalam ruang nama dengan betul, menyelesaikan ralat "Kelas tidak ditemui".
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Kelas Tidak Ditemui\' dalam Pemuatan Auto Ruang Nama PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!