مستودع واحد مع PHP: تنظيم الكود للمبتدئين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة



غالبًا ما يبدأ تطوير PHP بملف واحد index.php، ولكن مع نمو المشروع تظهر الحاجة لتنظيم الكود. يواجه العديد من المطورين معضلة: تخزين كل شيء في مستودع واحد (مستودع واحد) أو تقسيمه إلى العديد من المستودعات الصغيرة (مستودعات متعددة). في هذه المقالة، سنشرح مفهوم المستودع الواحد لمشاريع PHP، ونوضح كيفية تنظيم الكود للمبتدئين، ونقدم أمثلة عملية.



المستودع الواحد (monorepo) هو نهج يتم فيه تخزين كود عدة مشاريع أو مكتبات أو مكونات في مستودع واحد لنظام التحكم في الإصدارات (Git). في سياق PHP، هذا يعني أن موقعك الرئيسي وAPI والحزم والأدوات المساعدة موجودة في مجلد واحد. هذا يبسط إدارة التبعيات وإعادة الهيكلة والنشر.



في هذه المقالة ستتعلم:

  • ما هو المستودع الواحد ولماذا هو مطلوب
  • كيفية تنظيم هيكل المجلدات لـ PHP
  • كيفية إعداد Composer للعمل مع المستودع الواحد
  • أمثلة واقعية لتنظيم الكود


مزايا المستودع الواحد لـ PHP



يعتقد العديد من مطوري PHP المبتدئين أن المستودع الواحد هو "مزبلة كود". في الواقع، مع التنظيم الصحيح، هو أداة قوية. إليك المزايا الرئيسية:



  • سهولة التنقل: جميع مكونات المشروع موجودة في مكان واحد. لا حاجة للتبديل بين المستودعات.
  • إصدار موحد للتبعيات: تستخدم ملف composer.json واحد لإدارة الحزم، مما يلغي تعارضات الإصدارات.
  • التزامات ذرية: يمكن إجراء تغييرات على API والواجهة الأمامية والمكتبات في التزام واحد، مما يبسط التراجع.
  • اختبار مبسط: اختبارات التكامل تجري بشكل أسرع حيث أن جميع المكونات متاحة محليًا.
  • CI/CD موحد: خط أنابيب بناء واحد للمشروع بأكمله.


ومع ذلك، المستودع الواحد ليس مناسبًا للجميع. إذا كان فريقك كبيرًا (أكثر من 20 شخصًا)، أو كانت المشاريع مختلفة جدًا في التقنيات، فمن الأفضل التفكير في المستودعات المتعددة. للمشاريع المبتدئة والمتوسطة، هذا هو الخيار المثالي.



هيكل المستودع الواحد: مخطط أساسي



لنقم بإنشاء هيكل نموذجي لمستودع PHP واحد. لنفترض أن لدينا تطبيق ويب مع API وعدة مكتبات. إليك التسلسل الهرمي الموصى به للمجلدات:



my-php-monorepo/├── apps/│   ├── web/               # الموقع الرئيسي (Laravel, Symfony أو PHP خالص)│   │   ├── public/│   │   ├── src/│   │   └── config/│   └── api/               # خادم API│       ├── public/│       ├── src/│       └── routes/├── packages/              # المكتبات والحزم الداخلية│   ├── core/              # نواة النظام (الفئات الأساسية)│   │   ├── src/│   │   └── composer.json│   ├── database/          # العمل مع قاعدة البيانات (الترحيلات، النماذج)│   │   ├── src/│   │   └── composer.json│   └── utils/             # الأدوات المساعدة (التحقق، التسجيل)│       ├── src/│       └── composer.json├── tests/                 # الاختبارات العامة├── docker/                # إعدادات Docker├── composer.json          # Composer الجذر├── composer.lock├── .gitignore└── README.md


شرح:

  • apps/ — يحتوي على التطبيقات القابلة للتنفيذ (المواقع، API، البرامج النصية لوحدة التحكم). كل تطبيق له نقطة دخول خاصة به (public/index.php).
  • packages/ — الحزم الداخلية التي تقوم بتطويرها. يتم ربطها عبر composer.json باستخدام مستودعات path.
  • tests/ — الاختبارات الجذرية (مثل اختبارات التكامل التي تتحقق من التفاعل بين الحزم).
  • docker/ — ملفات Docker (Dockerfile, docker-compose.yml).


إعداد Co

المدونات

توصيات الكتب