Rumah >pembangunan bahagian belakang >PHP7 >Bagaimana cara autoload dalam Php 7?
Artikel ini menerangkan autoloading Php 7, menggunakan SPL_AUTOLOAD_REGISTER () untuk memuat kelas atas permintaan. Ia memperincikan amalan terbaik seperti autoloading dan caching berasaskan ruang nama untuk pengoptimuman prestasi, menangani isu-isu biasa (contohnya, kelas tidak dijumpai
Autoloading dalam Php 7 membolehkan anda memuat kelas atas permintaan, menghapuskan keperluan untuk memasukkan secara manual atau memerlukan fail untuk setiap kelas. Ini meningkatkan organisasi kod dengan ketara dan mengurangkan masa pemuatan awal permohonan anda. PHP 7 menggunakan fungsi spl_autoload_register()
untuk menguruskan autoloaders. Fungsi ini mendaftarkan fungsi panggil balik yang akan dilaksanakan apabila kelas atau antara muka digunakan tetapi belum ditakrifkan.
Cara paling mudah untuk melaksanakan autoloading adalah menggunakan fungsi tunggal:
<code class="php"><?php spl_autoload_register(function ($class) { $file = __DIR__ . '/classes/' . $class . '.php'; if (file_exists($file)) { require_once $file; } }); // Now you can use classes without explicitly including them $myObject = new MyClass(); ?></code>
Kod ini mendaftarkan fungsi tanpa nama yang mengambil nama kelas sebagai hujah. Ia membina laluan fail yang menganggap kelas anda berada dalam direktori classes
dalam direktori semasa. Ia kemudian memeriksa jika fail wujud dan termasuk menggunakan require_once
untuk mengelakkan pelbagai kemasukan. __DIR__
Menyediakan direktori fail semasa, menjadikan kod lebih mudah alih. Ingatlah untuk membuat direktori classes
dan letakkan fail kelas anda (misalnya, MyClass.php
) di dalamnya.
Beberapa amalan terbaik dapat mengoptimumkan autoloading untuk prestasi:
<code class="php"><?php spl_autoload_register(function ($class) { $prefix = 'MyNamespace\\'; $base_dir = __DIR__ . '/classes/'; if (strpos($class, $prefix) !== 0) { return; } $relative_class = substr($class, strlen($prefix)); $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; if (file_exists($file)) { require_once $file; } }); ?></code>
Contoh ini mengendalikan kelas dalam ruang nama MyNamespace
dan memetakannya ke struktur direktori yang sepadan.
require_once
lebih selamat tetapi lebih perlahan daripada require
. Gunakan require_once
hanya jika anda perlu menjamin terhadap pelbagai kemasukan.Walaupun konsep teras autoloading tetap sama, Php 7 menawarkan peningkatan prestasi dan konsistensi:
spl_autoload_register()
dan penggunaannya tetap konsisten di seluruh Php 5.3 dan kemudian versi, termasuk Php 7. Ini bermakna kod yang ditulis untuk versi yang lebih lama mungkin berfungsi tanpa pengubahsuaian.spl_autoload_register()
menggalakkan kod yang lebih konsisten merentasi projek yang berbeza.Masalah biasa dengan autoloading termasuk:
require
bukannya require_once
, anda mungkin menghadapi isu -isu kerana definisi kelas pendua. Sentiasa lebih suka require_once
untuk autoloading.Penyelesaian masalah yang berkesan melibatkan:
echo
atau var_dump
untuk mengesan aliran pelaksanaan autoloader anda, termasuk laluan fail yang dihasilkan dan nama kelas.Dengan mengikuti amalan terbaik dan teknik penyelesaian masalah ini, anda boleh melaksanakan autoloading secara berkesan dalam Php 7 untuk meningkatkan organisasi kod, pemeliharaan, dan prestasi.
Atas ialah kandungan terperinci Bagaimana cara autoload dalam Php 7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!