microsymfony؟
عن ؟
Microsymfony هو هيكل عظمي للتطبيق Symfony 7.2 على المنشطات ، جاهز للاستخدام.
لقد قمت بعمل مدونة طويلة تشرح الفلسفة وراءها وكيفية استخدامها:
- تقديم قالب تطبيق microsymfony
قاعدة واحدة: الاعتماد الإلزامي الوحيد هو PHP !
ملاحظة : إذا كنت ترغب في استخدام إصدار Symfony 6.4 LTS الأخير في ملف composer.json الخاص بك ، استبدل جميع أحداث 7.2 بـ 6.4 وتشغيل composer up .
جدول المحتويات
- العروض التوضيحية
- بداية سريعة
- مع Symfony Binary
- مع Frankenphp
- متطلبات
- كومة
- سمات
- ميزة الفروع
- بنية تحتية
- قاعدة البيانات
- الأدوات
- ملحوظات
- Symfony ux
- ملفات تكوين PHP
- ممارسات جيدة أخرى
- مراجع
- المساهمة
- حماية
- الاعتمادات
- رخصة
- بنيت مع microsymfony
العروض التوضيحية؟
لأن العرض التوضيحي الحي دائمًا أفضل من جميع التفسيرات:
- عرض مباشر في https://microsymfony.ovh
- عرض مباشر مدعوم من Frankenphp في https://frankenphp.microsymfony.ovh
Quick-Start ⚡
مع Symfony Binary؟
يجب أن يكون لديك Symfony Binary و Composer مثبتة محليًا.
لإنشاء مشروع جديد ، من العلامة الأخيرة ، تشغيل:
composer create-project strangebuzz/microsymfony && cd microsymfony
ثم ابدأ خادم PHP مع Make:
أو مع الخروع:
افتح https://127.0.0.1:8000 (مع الأخذ في الاعتبار منفذ 8000 مجاني) واستمتع! ؟
ملاحظة : يمكنك أيضًا استخدام الزر الأخضر "استخدم هذا القالب ⇩" في الجزء العلوي الأيمن من صفحة GitHub Project Homepage. هذا يخلق مستودعًا جديدًا من الفرع الرئيسي بدلاً من الإصدار الأخير. أنا أضمن أن كل الالتزامات الرئيسية مستقرة ؛ يمكنك التحقق من أن وظائف CI المرتبطة هي ✅.
مع Frankenphp؟
يمكننا أيضًا استخدام FrankenPhP لتشغيل microsymfony. يجب أن يكون لديك Docker مثبت محليًا.
قم بإنشاء مشروع جديد من قالب GitHub ، تشغيل:
docker run --rm -it -v $PWD:/app composer:latest create-project strangebuzz/microsymfony && cd microsymfony
تثبيت Frankenphp Symfony Runtime:
docker run --rm -it -v $PWD:/app composer:latest require runtime/frankenphp-symfony
ثم قم بالتشغيل:
docker run
-e FRANKENPHP_CONFIG="worker ./public/index.php"
-e APP_RUNTIME=Runtime\FrankenPhpSymfony\Runtime
-v $PWD:/app
-p 80:80 -p 443:443
-d
dunglas/frankenphp
فتح https: // localhost واستمتع! ؟
PS : على Windows ، استبدل $PWD بـ "%cd%" .
يمكنك أيضًا استخدام فرع Frankenphp مباشرة.
المتطلبات ⚙
- PHP 8.2 (يعمل أيضًا مع PHP 8.3 و PHP 8.4)
- Symfony CLI
المتطلبات الاختيارية؟
- امتداد XDebug PHP إذا كنت ترغب في تشغيل تقرير تغطية الرمز
- عداء مهمة Castor إذا كنت لا ترغب في استخدام Make و Makefile
مكدس؟
- PHP 8.2 إلى 8.4
- Symfony 7.2
- غصين 3.8
- الحافز Hotwired 3.2 و Turbo 8.0
- phpunit 11.5
- بيكو CSS 2.0
سمات
يشحن Microsymfony هذه الميزات ، جاهزة للاستخدام:
- اثنين من المتسابقين المهام
- جعل (المصدر) (العرض التوضيحي)
- الخروع (المصدر) (العرض التوضيحي)
- تحليل ثابت مع Phpstan 2
- معايير الترميز مع PHP-CS-Fixer
- الاختبارات (العرض التوضيحي)
- مثال اختبار الوحدة
- مثال اختبار التكامل
- مثال اختبار وظيفي
- مثال اختبار API
- مثال اختبار E2E
- تغطية الرمز بنسبة 100 ٪ (عتبة قابلة للتكوين)
- جيثب CI (الإجراءات)
- اختبارات ناتج الوظيفة
- الوريد الناتج عن الوظيفة
- إخراج الوظيفة الأمنية
- أصول Mapper+التحفيز (الوثائق)
- الفانيليا JS (المصدر) (العرض التوضيحي)
- جلب على نقطة نهاية JSON للتطبيق (المصدر) (العرض التوضيحي)
- قالب خطأ مخصص
ميزة الفروع؟
لا يتم دمج فروع الميزات في الفرع الرئيسي ولكن يتم استخدامها لاختبار تكامل مكتبة بائع جديدة أو إنشاء POC. على سبيل المثال ، هل سبق لك أن حلمت باختبار البليغ ، The Laravel Orm ، في مشروع Symfony؟ ثم استنساخ الفرع eloquent ، وقم بتشغيل composer install && make load-fixtures .
بنية تحتية
- Frankenphp (PR ، Branch ، تم إعادة صياغته في 2024-11-17)
- Symf-Docker (PR ، فرع ، تم إعادة صياغته في 2024-11-17)
قاعدة البيانات؟
تهدف فروع «قاعدة البيانات» إلى عرض قائمة بالسجلات من قاعدة بيانات SQLite.
- عقيدة Dbal (PR ، فرع ، تم إعادة صياغتها في 2024-12-22)
- بليغة ORM (PR ، فرع ، تم إعادة صياغتها في 2024-11-17)
الأدوات؟
- TaskFile (PR ، فرع ، تم تربيته في 2024-11-17)
- Twigstan (العلاقات العامة ، فرع ، تم تربيته في 2024-11-17)
- Twig-CS-Fixer (PR ، فرع ، تم إعادة صياغته في 2024-11-21)
سيقوم المرء بإعادة صياغة تلك الفروع بانتظام حتى تكون محدثة دائمًا.
ملحوظات ؟
symfony-ux
يتم تعطيل النماذج التوربو في الأصول/app.js. لتمكين الميزة لنموذج معين ، أضف السمة data-turbo="true" لها. أو قم بتغيير المعلمة Turbo.setFormMode on الميزة على مستوى العالم. في كلتا الحالتين ، يجب تعديل رمز وحدة التحكم الخاصة بك وفقًا لذلك.
ملفات تكوين PHP
إذا قمت بتثبيت مكتبة Symfony جديدة ، يمكن للوصفات المرنة إضافة ملفات Yaml إلى مشروعك. يتم تحميل ملفات YAML هذه ، ولكن يمكنك تحويلها إلى PHP مثل ملفات التكوين الأخرى. على سبيل المثال ، لتحويل تكوين messenger Yaml إلى PHP مع تبسيط ، تشغيل:
vendor/bin/config-transformer convert config/packages/messenger.yaml
ممارسات جيدة أخرى؟
- باستخدام ملفات تكوين PHP بدلاً من YAML (المصدر)
- باستخدام أنواع صارمة في جميع ملفات PHP (المصدر)
- باستخدام نمط ADR في وحدة تحكم الإجراء (المصدر) (DOC)
- يتم تطبيع ملف Composer.json باستخدام ergebnis/composer
- استخدام المكون الإضافي لـ Composer Bin لتثبيت وتشغيل PHP-CS-Fixer
مراجع
- كيفية التبديل من YAML يتكوين إلى PHP اليوم مع Symplify (TomasVotruba.com)
- phpstan 2.0 صدر مع المستوى 10 و Elephants! (phpstan.org)
- نمط ADR أفضل لوحدات التحكم Symfony الخاصة بك (StrangeBuzz.com)
- تكوين TaskFile الخاص بي لـ Symfony (jmsche.fr)
- يجب أن تستخدم حافة النزف phpstans (backendtea.com)
- اتفاقية تسمية جيدة للطرق وأجهزة التحكم والقوالب؟ (jolicode.com)
- تطوير التطبيقات الأمامية ، على غرار Symfony (S) (Dunglas.dev)
- تفتيش تغطية الاختبار الآلية مع Travis ، phpunit لطلبات سحب github (ocramius.github.io)
- تثبيت واستخدام PHP-CS-Fixer (StrangeBuzz.com)
- Castor ، رحلة عبر Sea of Task Runners (Jolicode.com)
- تهيئة مشروع Symfony الخاص بك مع أسس صلبة (StrangeBuzz.com)
- تنظيم اختبارات مشروع Symfony الخاص بك (StrangeBuzz.com)
- ما هي أفضل ممارسات Symfony الخاصة بك؟ (StrangeBuzz.com)
- تعيين سير عمل CI/CD لمشروع Symfony بفضل إجراءات GitHub (StrangeBuzz.com)
- أفضل الممارسات Symfony Framework (Symfony.com)
المساهمة؟
يرجى الاطلاع على المساهمة و CODE_OF_CONDUCHUTION للحصول على التفاصيل.
حماية ؟
يرجى الاطلاع على الأمان للحصول على التفاصيل.
الاعتمادات
- لفائف (المشرف الأساسي)
- جميع المساهمين
ترخيص ⚖
ترخيص معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.
بنيت مع microsymfony
- poncland.ovh (2024-12-01)
- appartement-tourcoing.com (2024-11-30)
- Easyadmin Mercure Demo (2023-05-24)