العمل الجماعي: أسلوب الكود واتفاقيات PHP
\n\nتخيل أنك تدخل مشروعًا بلغة PHP لشخص آخر. تفتح ملفًا، وتجد علامات التبويب ممزوجة بالمسافات، والمتغيرات مسماة بشكل عشوائي، والأقواس المتعرجة موضوعة في أي مكان، ولكن ليس حيث اعتدت أنت. مألوف؟ والآن تخيل أن هناك المئات من هذه الملفات، وكل ملف كتبه مطور مختلف. كابوس لمراجعة الكود وصيانته.
\n\nفي هذه المقالة، سنشرح لماذا أسلوب الكود PHP واتفاقيات الكود ليست مجرد نزوة من مطور أول، بل هي أساس العمل الجماعي الفعال. ستتعرف على معايير PSR، وقواعد التسمية، والتنسيق، وستحصل على أمثلة واقعية يمكنك تطبيقها فورًا في مشروعك.
\n\nلماذا أسلوب الكود مهم للفريق؟
\n\nعندما يعمل عدة مطورين على مشروع واحد، يصبح أسلوب الكود الموحد منقذًا. إليك السبب:
\n\n- \n
- قابلية القراءة. الكود المكتوب وفق قواعد موحدة يسهل قراءته من قبل أي عضو في الفريق. لا حاجة للتخمين عما قصده المؤلف. \n
- سرعة مراجعة الكود. إذا كان الكود منسقًا بشكل موحد، يركز المراجع على المنطق، وليس على التنسيق. \n
- أخطاء أقل. الاتفاقيات الموحدة تقلل من احتمالية الأخطاء المرتبطة بأساليب الكتابة المختلفة. \n
- سهولة الانضمام. المطور الجديد يندمج في المشروع بشكل أسرع إذا كان الكود متوقعًا ومنظمًا. \n
في جوهر الأمر، معايير الترميز PHP هي اللغة التي يتواصل بها الفريق بأكمله. كلما كانت أكثر توحيدًا، قل سوء الفهم.
\n\nالمعايير الأساسية: PSR وما بعدها
\n\nفي عالم PHP، هناك عدة توصيات رئيسية أصبحت معايير فعلية. أهمها PSR-1 وPSR-12 (سابقًا PSR-2). وهي مدعومة من قبل PHP-FIG (مجموعة قابلية التشغيل البيني للأطر).
\n\nPSR-1: القواعد الأساسية
\n\nيصف PSR-1 القواعد الأكثر عمومية: كيفية تسمية الفئات والطرق والثوابت وكيفية تنظيم الملفات.
\n\nالنقاط الرئيسية:
\n- \n
- يجب أن تستخدم الملفات فقط
<?phpأو<?=(الوسم القصير للإخراج). \n - ترميز الملف هو UTF-8 بدون BOM. \n
- أسماء الفئات بصيغة StudlyCaps (PascalCase). \n
- أسماء الطرق بصيغة camelCase. \n
- الثوابت بأحرف كبيرة مع شرطات سفلية (
MAX_VALUE). \n
مثال على كود صحيح وفق PSR-1:
\n\n<?php\n\nnamespace App\\Services;\n\nclass UserService\n{\n const DEFAULT_ROLE = 'user';\n\n public function getUserById(int $id): ?User\n {\n // منطق\n }\n\n public function isAdmin(): bool\n {\n // منطق\n }\n}\n\nPSR-12: قواعد الأسلوب الموسعة
\n\nPSR-12 هو تطور لـ PSR-2. يضيف المزيد من التفاصيل حول التنسيق.
\n\nالنقاط الرئيسية:
\n- \n
- المسافات البادئة: 4 مسافات (وليس علامات تبويب). \n
- الأقواس المتعرجة تفتح في نفس السطر للفئات والطرق وهياكل التحكم (أسلوب K&R). \n
- بعد الكلمات المفتاحية (
if,else,while) يجب وجود مسافة. \n - سطر فارغ بعد تعريف namespace وقبل return في الطرق (اختياري). \n
- لا يزيد طول السطر عن 120 حرفًا (يوصى بـ 80). \n
مثال على تنسيق صحيح وفق PSR-12:
\n\n<?php\n\nnamespace App\\Controllers;\n\nuse App\\Models\\User;\nuse App\\Services\\AuthService;\n\nclass AuthController\n{\n private AuthService $authService;\n\n public function __construct(AuthService $authService)\n {\n $this->authService = $authService;\n }\n\n public function login(array $credentials): bool\n {\n if (empty($credentials['email']) || empty($credentials['password'])) {\n return false;\n