باو جارسيا -> عروض الكتالوج الترويجية
صنع مع
- بي إتش بي 8.1
- د.د.د
- بنية سداسية (المنافذ والمحولات)
- CQRS
- عامل ميناء
- اختبار مع PHPUnit
التعليمات الرئيسية
- إطلاق حاويات عامل الإرساء:
docker-compose up -d
- في التشغيل الأول، قم بتثبيت التبعيات:
docker-compose exec php-fpm bash
ثم composer install
طرق واجهة برمجة التطبيقات
- http://localhost:33000/api/products-with-discounts (جميع المنتجات)
- http://localhost:33000/api/products-with-discounts?filterByCategory=boots (التصفية حسب الفئة)
الاختبارات
- بالنسبة لاختبارات الإطلاق، قم بتكوين
docker-compose exec php-fpm bash
ثم vendor/bin/phpunit --testdox
توضيحات بشأن القرارات
- لقد استخدمت Symfony لتطوير منتج/خصومات API بسيطة، وكان الرد منهم عبارة عن قائمة بالمنتجات التي تم تطبيق الخصومات عليها.
- أستخدم عامل إرساء بسيط (خادم الويب nginx / php-fpm / mongo) لتشغيل المشروع.
- قررت استخدام قاعدة البيانات "في الذاكرة" لوظيفة هذا التمرين ببساطة، ولكن في المشروع قمت بتطوير مستودعات Mongo، لأنه في التمرين أقول "يجب أن تأخذ في الاعتبار أنا أقرر استخدام قاعدة البيانات "في الذاكرة" للوظيفة ببساطة من هذا التمرين، ولكن في المشروع قمت بتطوير مستودعات مونغو، لأنه في التمرين يقول "يجب أن تأخذ في الاعتبار أن هذه القائمة يمكن أن تنمو لتشمل 20.000 منتج وربما يكون mongoDB خيارًا جيدًا في هذا." posibiliry.ccount أن هذه القائمة يمكن أن تنمو لتشمل 20.000 منتج." وربما يكون mongoDB خيارًا جيدًا في هذا الاحتمال.
- لقد قمت بإنشاء كل الهياكل باستخدام Hexagonal Architecture وDDD، باستخدام هذه التقنية لفصل قواعد العمل الخاصة بنا عن بقية التعليمات البرمجية.
- يحتوي السياق الحدودي "الكتالوج" داخل هذا على 3 كيانات (المنتج، وProductDiscount، وProductPriceSummary).
- لقد استخدمت نمط CQRS في حالات الاستخدام لدينا (الأوامر والاستعلامات)، وهذا يساعدنا في اختبارها.