شرح صفوف ومحتوى الفقرة
تقوم الدالة المدمجة spl_autoload_register() بتسجيل دالة رد نداء يستدعيها محرك PHP تلقائياً ويمرر إليها الاسم الكامل للصنف (مع مجال الأسماء) فور طلب صنف غير محمل.
- تستقبل دالة التحميل التلقائي معاملاً نصياً واحداً
$classيمثل الاسم الكامل للصنف (مثل"App\Services\TaxService"بدون شرطة مائلة بادئة). - داخل الدالة، يتم استبدال فواصل مجال الأسماء
\بفواصل المجلدات/وإضافة الامتداد.phpثم تضمين الملف إذا كان موجوداً. - يمكن تسجيل عدة محملات تلقائية في طابور منظم؛ فإذا لم يجد الأول الملف ينتقل PHP تلقائياً للمحمل التالي.
عند طلب الصنف App\Billing\InvoiceGateway، يستدعي PHP تلقائياً الدالة المسجلة في spl_autoload_register() ويحول اسم الصنف إلى مسار ملف.
PHP
<?php
$resolvedPath = "";
spl_autoload_register(function (string $class) use (&$resolvedPath): void {
$relative = str_replace("\\", "/", $class) . ".php";
$resolvedPath = __DIR__ . "/src/" . $relative;
});
class_exists("App\\Billing\\InvoiceGateway", true);
echo basename($resolvedPath) . " -> " . str_contains($resolvedPath, "src/App/Billing/InvoiceGateway.php") . "\n";