انتقل إلى محتوى الدرس

PSR-4 Directory to Namespace Mapping ربط المجلدات بمجالات الأسماء وفق PSR-4

تخلص من استدعاءات require اليدوية عبر إتقان spl_autoload_register ومعيار PSR-4 وإدارة الحزم بأداة Composer.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

معيار PSR-4 هو القياس الرسمي لمنظمة PHP-FIG الذي يربط بادئة مجال الأسماء الرئيسي (مثل App\) بمجلد مصدري أساسي (مثل src/) بحيث يطابق كل مجال فرعي مجلداً فرعياً.

  • وفق قاعدة الربط "App\" => "src/"، يجب أن يوجد الصنف App\Http\HomeController في المسار src/Http/HomeController.php.
  • يجب أن تتطابق حالة الأحرف (الكبيرة والصغيرة) لأسماء المجلدات والملفات مع اسم المجال والصنف تماماً لتجنب فشل التحميل على خوادم Linux الحساسة لحالة الأحرف.
  • يحتوي كل ملف PHP وفق PSR-4 على صنف واحد أو واجهة أو سمة أو تعداد واحد يطابق اسم الملف.

تزيل الدالة psr4Path() بادئة مجال الأسماء المسجلة (App\) وتستبدلها بالمجلد src/ ثم تحول الفواصل وتضيف .php.

PHP
<?php
function psr4Path(string $prefix, string $baseDir, string $fqcn): string {
    if (!str_starts_with($fqcn, $prefix)) return "";
    $relativeClass = substr($fqcn, strlen($prefix));
    return $baseDir . str_replace("\\", "/", $relativeClass) . ".php";
}

echo psr4Path("App\\", "src/", "App\\Catalog\\ProductRepository") . "\n";
echo psr4Path("Tests\\", "tests/", "Tests\\Unit\\CartTest") . "\n";