PSR: المعايير التي تنظّم كتابة كود PHP

مع تطور PHP وازدياد عدد الأطر والمكتبات، ظهرت الحاجة إلى معايير موحدة تُنظم طريقة كتابة الكود، تحميل الكلاسات، والتعامل مع المكونات المختلفة داخل المشاريع.
هذه الحاجة كانت السبب لظهور PHP-FIG، وهي مجموعة تضم ممثلين من أبرز أطر PHP مثل Laravel وSymfony وZend.

أطلقت هذه المجموعة سلسلة من المعايير تحت اسم PSR – PHP Standard Recommendations، والتي أصبحت حجر الأساس لكتابة كود احترافي ومنظم وقابل للصيانة والتوسّع.


ما هو PSR؟

هي مجموعة من المعايير الرسمية التي تحدد كيفية كتابة وتنظيم كود PHP بطريقة موحدة.

تطبيق هذه المعايير يحقق:

  • اتساقًا في أسلوب كتابة الكود
  • توافقًا بين الحزم المختلفة
  • سهولة القراءة والصيانة
  • تحسين جودة المشاريع الكبيرة

أهم معايير PSR المعتمدة في Laravel

1. PSR-1 — معايير كتابة الكود الأساسية

يحدد PSR-1 القواعد الجوهرية لأي مشروع PHP، وأبرزها:

قواعد التسمية

  • الكلاسات: تُكتب بصيغة StudlyCaps
  • الدوال والمتغيرات: تُكتب بصيغة camelCase
  • تطابق اسم الملف مع اسم الكلاس

2. PSR-4 — معيار التحميل التلقائي (Autoloading)

يُعد PSR-4 من أهم المعايير لأنه الأساس الذي يعتمد عليه Composer.

  • كل Namespace يقابله مسار فعلي داخل المشروع
  • عند استخدام كلاس ما، يقوم الـ autoloader بتحميله تلقائيًا
  • Laravel يعتمد PSR-4 بالكامل، مما يجعل تنظيم الملفات منطقيًا وسهلًا

3. PSR-12 — دليل تنسيق الكود (Coding Style Guide)

هو النسخة المطوّرة من PSR-2، ويهدف إلى أسلوب كتابة واضح وموحّد.

أهم قواعده:

  • استخدام 4 مسافات للمسافة البادئة
  • وضع الأقواس {} على سطر جديد بعد تعريف الكلاسات أو الدوال
  • ترك فراغ بعد الكلمات المفتاحية مثل if و for
  • عدم تجاوز السطر 120 حرفًا
  • استخدام أسطر فارغة بين أجزاء الكود لزيادة الوضوح

Laravel نفسه مكتوب بأسلوب PSR-12.


4. PSR-7 — معيار التعامل مع HTTP

يقدم PSR-7 نموذجًا موحدًا لتمثيل الطلبات والاستجابات في HTTP.

في Laravel:

  • النواة لا تعتمد PSR-7 مباشرة
  • لكن Laravel يسمح بالتحويل إليه
  • مكتبة Guzzle (المستخدمة للـ APIs) تعتمد PSR-7 بالكامل

5. PSR-11 — معيار Container Interface

يعالج PSR-11 طريقة بناء واستخدام Dependency Injection Containers.

في Laravel:

  • لا يطبق PSR-11 حرفيًا
  • لكنه يقدّم Service Container قويًا ومتوافقًا
  • يدعم تسجيل الخدمات
  • يسمح بـ Constructor Injection و Method Injection

كيف يطبّق Laravel معايير PSR عمليًا؟

  • التحميل التلقائي عبر PSR-4: كل كلاس داخل app/ يتم تحميله تلقائيًا
  • بنية الكود مطابقة لـ PSR-1 و PSR-12
  • دعم مكتبات PSR-7 مثل Guzzle
  • حاوية خدمات قريبة من PSR-11

أهمية PSR لكل مطور Laravel

  • كود نظيف وواضح
  • قابلية صيانة وتطوير عالية
  • تناسق داخل الفريق
  • توافق مع مكتبات وإطارات أخرى
  • احترافية وجودة أعلى في المشاريع

أدوات تساعد على تطبيق PSR تلقائيًا

  1. PHP-CS-Fixer
    لتنسيق الكود وفق PSR-12 تلقائيًا.
  2. PHP CodeSniffer
    للتحقق من مخالفات PSR.
  3. PHPStorm و VSCode
    كلاهما يدعم قواعد PSR بشكل مدمج.

المراجع

  • Laracasts
ندى جبور

ندى جبور

مطورة باك إند