> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/ar/dlyl-almtw-r/developer-guide/contributing/coding-conventions.md).

# اتفاقيات الترميز

## PHP

* **المعيار**: أسلوب الترميز PSR-12
* **تصريحات الأنواع**: استخدم تصريحات الأنواع في PHP 8.3 (أنواع المعاملات، أنواع الإرجاع، أنواع الخصائص)
* **الأنواع الصارمة**: يجب أن تصرّح جميع ملفات PHP بـ `strict_types=1`
* **مساحات الأسماء**: اتبع التحميل التلقائي PSR-4 (مثل `Chamilo\CoreBundle\Entity\User`)
* **معايير Symfony**: اتبع معايير الترميز وأفضل الممارسات في Symfony

## JavaScript/Vue

* **ESLint + Prettier**: يُفحص الكود باستخدام ESLint ويُنسَّق باستخدام Prettier؛ الإعداد موجود في `eslint.config.mjs` في جذر المشروع. كما يُفعَّل `prettier-plugin-tailwindcss` لفرز أصناف Tailwind تلقائيًا.
* **Composition API**: استخدم صياغة Vue 3 `<script setup>` للمكوّنات الجديدة
* **TypeScript**: TypeScript مدعوم؛ استخدمه للكود الآمن من حيث الأنواع

## CSS

* **Tailwind CSS**: فضّل أصناف الأدوات المساعدة على CSS المخصص
* **تسمية BEM**: عند الحاجة إلى CSS مخصص، استخدم اتفاقية تسمية BEM
* **SCSS**: استخدم SCSS لصحائف الأنماط المعقّدة

## أدوات التحليل الثابت وإعادة الهيكلة في PHP

يوفر المشروع إعدادات لثلاث أدوات إضافية:

| الأداة      | ملف الإعداد    | الغرض                                               |
| ----------- | -------------- | --------------------------------------------------- |
| **PHPStan** | `phpstan.neon` | تحليل ثابت (المستوى 5، يمسح `src/` ودلائل الاختبار) |
| **Psalm**   | `psalm.xml`    | تمريرة تحليل ثابت ثانية؛ تُشغَّل في CI عند كل دفع   |
| **Rector**  | `rector.php`   | تحويلات وترقيات آلية للكود                          |

شغّلها عبر اختصارات composer: `composer phpstan`، `composer psalm`. راجع [الاختبار](/3.x/ar/dlyl-almtw-r/developer-guide/contributing/testing.md) للاطلاع على الأوامر الكاملة.

## عام

* **الإنجليزية**: يجب أن تكون جميع تعليقات الكود وأسماء المتغيرات والتوثيق باللغة الإنجليزية
* **الترجمات**: يجب أن يستخدم كل النص الموجّه للمستخدم نظام الترجمة (Vue I18n للواجهة الأمامية، Symfony Translator للخلفية)
* **لا قيم سحرية**: استخدم الثوابت أو التعدادات بدلًا من القيم المضمَّنة مباشرة
