ما هو Symfony ولماذا هو مطلوب؟
\n\nSymfony هو إطار عمل مكوني قوي وناضج ومن أشهر أطر العمل للغة PHP. وهو مصمم لإنشاء تطبيقات الويب، بدءًا من المواقع الصغيرة وصولاً إلى الأنظمة المؤسسية المعقدة. على عكس أطر العمل المتجانسة، تم بناء Symfony على مبدأ النمطية: فهو يتكون من مجموعة من المكونات (المكتبات) المستقلة والموثقة جيدًا والقابلة لإعادة الاستخدام. يمكنك استخدام الإطار بأكمله أو مكوناته الفردية (على سبيل المثال، فقط مكون طلب HTTP أو التوجيه) في أي مشروع PHP آخر.
\n\nلماذا هو مطلوب؟
\n- \n
- تسريع التطوير: يوفر Symfony حلولاً جاهزة للمهام النموذجية: التوجيه، العمل مع قواعد البيانات (عبر Doctrine ORM)، القوالب (Twig)، المصادقة، معالجة النماذج، التخزين المؤقت، وأكثر من ذلك بكثير. لست بحاجة لإعادة اختراع العجلة. \n
- الهيكلة وقابلية الصيانة: يفرض الإطار بنية واضحة (MVC - Model-View-Controller)، مما يجعل الكود منظمًا وقابلًا للتنبؤ وسهل الصيانة من قبل المطورين الآخرين. \n
- الموثوقية والأمان: يحتوي Symfony على آليات مدمجة للحماية من الثغرات الشائعة (CSRF, XSS, SQL-حقن). يُستخدم في عمالقة مثل Drupal و phpBB والعديد من المشاريع المؤسسية. \n
- المجتمع والنظام البيئي: مجتمع ضخم، وآلاف الحزم الجاهزة (الإضافات)، وتوثيق ممتاز، ودعم طويل الأمد (إصدارات LTS). \n
- المرونة: يمكنك البدء بإطار عمل مصغر (Symfony MicroKernel) لواجهات API ثم إضافة المكونات المطلوبة تدريجيًا مع نمو المشروع. \n
تثبيت Symfony
\n\nعلى عكس Python (حيث يُستخدم pip)، في PHP تُستخدم Composer لإدارة التبعيات. يتكون تثبيت Symfony من مرحلتين: تثبيت المثبت نفسه (Symfony CLI) وإنشاء المشروع.
1. تثبيت Composer
\nإذا لم يكن لديك Composer بعد، قم بتنزيله وتثبيته من الموقع الرسمي getcomposer.org. هذه أداة عالمية لـ PHP.
\n# التحقق من تثبيت Composer\ncomposer --version\n\n2. تثبيت Symfony CLI (موصى به)
\nSymfony CLI هي أداة مريحة لإنشاء وإدارة وتشغيل المشاريع.
\n# التثبيت على macOS/Linux (عبر curl)\ncurl -sS https://get.symfony.com/cli | bash\n\n# التثبيت على Windows (عبر Chocolatey)\nchoco install symfony-cli\n\n# التحقق\nsymfony --version\n\n3. إنشاء مشروع جديد
\nاستخدم الأمر symfony new لإنشاء هيكل التطبيق.
# إنشاء تطبيق ويب كامل (مع Symfony Flex)\nsymfony new my_project --full\n\n# إنشاء تطبيق مصغر (لواجهات API)\nsymfony new my_api_project\nإذا كنت لا ترغب في تثبيت CLI، يمكنك استخدام Composer مباشرة:
\ncomposer create-project symfony/skeleton:"7.0.*" my_project\n# أو للتطبيق الكامل:\ncomposer create-project symfony/website-skeleton:"7.0.*" my_project\n\nبداية سريعة مع مثال كود
\n\nلنقم بإنشاء صفحة بسيطة "Hello, World!" باستخدام Symfony.
\n\n1. إنشاء المتحكم (Controller)
\nالمتحكم هو كلاس PHP يعالج الطلب ويعيد الاستجابة. قم بإنشاء ملف src/Controller/HelloController.php:
<?php\n// src/Controller/HelloController.php\n\nnamespace App\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Symfony\\Component\\Routing\\Annotation\\Route;\n\nclass HelloController extends AbstractController\n{\n #[Route('/hello/{name}', name: 'hello_page')]\n