4.3 · سيمفوني (Symfony) : المكونات وتويغ (Twig) ودوكترين (Doctrine)

المستوى 4 · أطر العمل وواجهات API (Frameworks & API)

4.3سيمفوني (Symfony) : المكونات وتويغ (Twig) ودوكترين (Doctrine)

الهدف: معرفة سيمفوني (المكونات وتويغ (Twig) ودوكترين (Doctrine)) وفلسفته (الصرامة والوحدية والمقاولة) وتكامله مع لارافيل — للبقاء قابلا للتكيف.
الوقت المقدّر: 12 دقيقة · قراءة ذاتية · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • سيمفوني = مكونات قابلة لإعادة الاستعمال : توجيه ونماذج وأمن ووحدة تحكم — تُستعمل معا أو منفصلة، حتى خارج سيمفوني.
  • تويغ + دوكترين : قوالب {{ }} و{% for %} مُهرَّبة افتراضيا، وقاعدة تُعالَج بكيانات كائنات باستعلامات مُعامَلة آلية.
  • منعكس رياد : المفاهيم نفسها مثل لارافيل (MVC و ORM والقوالب) — إتقان أحدهما يسهل الآخر، والاختيار حسب المشروع والسوق.

حالة مصغرة متواصلة — رياد يكتشف سيمفوني عند زبون

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

تتمة حالة 4.1-4.2 — يصبح رياد ثنائي اللغة لارافيل/سيمفوني.

1. بنية بمكونات

سيمفوني (Symfony) هو إطار عمل PHP الكبير الآخر، المحبوب في المقاولة والمشاريع الكبيرة : صارم ووحدي ومصمم للتعقيد. وسمته : مكونات مستقلة (توجيه ونماذج وأمن ووحدة تحكم و HTTP وتحقق وحقن تبعيات…)، كل مُختبَر منفصلا وقابل لإعادة الاستعمال خارج سيمفوني عبر Composer. كثير من المشاريع — ومنها لارافيل — تستعمل مكونات سيمفوني تحت الغطاء : إنه ركيزة النظام. نعتمده إطار عمل كاملا أو بالتقاط لَبِنات.

2. تويغ ودوكترين

تويغ (Twig) هو محرك القوالب : {{ variable }} و{% for %} و{% if %} ووراثة — مع تهريب آلي (ضد XSS)، محبوب أبعد بكثير من سيمفوني. ودوكترين (Doctrine) هو الـ ORM المرتبط : نعالج كيانات (كائنات) بدل SQL، بمعامَلة آلية وعلاقات وهجرات. وفارق تصميم : يتبع دوكترين نمط «راسم البيانات» (كيانات منفصلة عن الحفظ) بينما يتبع إلوكوينت «السجل النشط» (النماذج تحفظ نفسها) — وفلسفتان ممتازتان.

لارافيل (سهل ومنتج) مقابل سيمفوني (صارم ومقاولة) : خياران ناضجان واحترافيان، والمفاهيم نفسها (MVC والتوجيه و ORM والقوالب والأمن). يختار رياد حسب السياق — بدء سريع أو قيد مقاولة أو سوق محلي — دون قلق : الأساسي ينتقل.

خطأ شائع في الفهم: «لارافيل وسيمفوني عدوان، ويجب اختيار معسكر». لا. إنهما تطبيقان ناضجان للأفكار نفسها (MVC و ORM والقوالب والتوجيه والأمن)، مرتبطين تقنيا (يستعمل لارافيل مكونات سيمفوني). معارضتهما تُفوِّت الأساسي : المفاهيم القابلة للنقل. والمنعكس الجيد ثنائي اللغة — فهم الفلسفتين والاختيار حسب المشروع، لا حسب القبيلة.
سيمفوني : مكونات + ثنائي تويغ/دوكترين لَبِنات مستقلة والمفاهيم نفسها مكوناتتوجيه ونماذج وأمن ووحدة تحكم+تويغقوالب آمنة ووراثة+دوكترينكيانات كائنات وعلاقات وهجرات إطار عمل كامل أو لَبِنات ملتقطة عبر Composer.
لَبِنات مستقلة والمفاهيم نفسها
نص المخطط (SEO / قارئات الشاشة / الترجمة): 1) يرى رياد سيمفوني لعبة مكونات مستقلة، قابلة لإعادة الاستعمال حتى خارج إطار العمل. 2) يعرض تويغ بتهريب آلي ووراثة. 3) يعالج دوكترين كيانات كائنات بمعامَلة آلية وهجرات. الدرس : المفاهيم نفسها مثل لارافيل بأسماء أخرى — قابلية التكيف بدل المعسكر.

🔎 مثال ملموس — 🔎 مثال ملموس — فهرس سيمفوني : متحكم وتويغ ودوكترين

حركات رياد الثلاث جهة سيمفوني :

المتحكم (Controller) ← مسار /produits، يعرض produits/index.html.twig
تويغ (Twig) ← {% for p in produits %}
  • {{ p.nom }}
  • {% endfor %} دوكترين (Doctrine) ← $repo->findBy(['categorie' => $cat]) // كيانات، وليس SQL

    القراءة : الأدوار نفسها مثل لارافيل، ومفردات سيمفوني.

    الدرس : من يعرف أحدهما يقرأ الآخر دون ذعر.

    مفردات القسم

    سيمفوني (Symfony)
    إطار عمل PHP الكبير الآخر (مع لارافيل)، المشهور بالصرامة والوحدية والمحبوب في المقاولة والمشاريع الكبيرة.

    مثال بسيط: المكتب الخلفي المقاولاتي خاص برياد يفرضه لصرامته.

    ما ليس كذلك: سكربت صغير دون بنية ولا اختبارات.

    رد فعل: مشروع كبير متطلب ؟ قيّموا سيمفوني أولا.

    مكونات سيمفوني
    لَبِنات مستقلة (توجيه ونماذج وأمن ووحدة تحكم…) تُستعمل منفصلة، حتى خارج سيمفوني ؛ وتُستعمل تحت الغطاء من كثير، ومنهم لارافيل.

    مثال بسيط: يثبت رياد مكون وحدة التحكم فقط في سكربت قديم.

    ما ليس كذلك: إطار عمل متراص يُؤخذ أو يُترك.

    رد فعل: الالتقاط عبر Composer عندما يكون إطار العمل الكامل أكثر من اللازم.

    تويغ (Twig) (قوالب)
    محرك قوالب سيمفوني : {{ }} و{% for %} و{% if %} ووراثة — تهريب آلي ضد XSS، محبوب أبعد من سيمفوني.

    مثال بسيط: يحلق رياد {% for p in produits %} بعرض مُهرَّب.

    ما ليس كذلك: منطق PHP مكدس في القالب.

    رد فعل: قوالب مخصصة للإظهار، والمنطق في موضع آخر.

    دوكترين (Doctrine) (ORM)
    الـ ORM المرتبط بسيمفوني : كيانات كائنات بدل SQL، ومعامَلة آلية، وعلاقات، وهجرات ؛ ومقاربة راسم البيانات.

    مثال بسيط: يقرأ رياد $repo->findBy(['categorie' => $cat]) دون كتابة SELECT.

    ما ليس كذلك: SQL مدمج باليد في المتحكم.

    رد فعل: كيانات للعمل، ومستودع للاستعلامات.

    لارافيل مقابل سيمفوني
    إطارا عمل ممتازان ناضجان : لارافيل سهل/منتج ؛ وسيمفوني صارم/وحدي/مقاولة. المفاهيم نفسها قابلة للنقل.

    مثال بسيط: ينتقل رياد من أحدهما إلى الآخر بترجمة بليد↔تويغ وإلوكوينت↔دوكترين.

    ما ليس كذلك: اختيار قلق ونهائي «مدى الحياة».

    رد فعل: الاختيار حسب المشروع والفريق والسوق المحلي.

    في التطبيق — عمليا — اكتشاف سيمفوني ومكوناته

    1. افهموا الفلسفة : صارم ووحدي وبمكونات قابلة لإعادة الاستعمال، ومحبوب في المقاولة.
    2. حددوا تويغ ({{ }} و{% for %} وتهريب آلي) ودوكترين (كيانات بدل SQL وعلاقات وهجرات).
    3. لاحظوا فارق الـ ORM : دوكترين (راسم البيانات) مقابل إلوكوينت (السجل النشط).
    4. حددوا اختيار لارافيل/سيمفوني (إنتاجية مقابل صرامة/مقاولة) : المفاهيم تنتقل.
    تعرفون سيمفوني (المكونات وتويغ ودوكترين) وتكامله مع لارافيل — قابلون للتكيف على النظامين.

    نص جاهز للقول — الطمأنة على اختيار سيمفوني (30 ثانية)

    « هذا رياد : يمنحنا سيمفوني مكونات مجربة وقوالب تويغ آمنة ودوكترين لكياناتنا — الصرامة التي ينتظرها زبون المقاولة هذا. ومكتسبات لارافيل تنتقل : المفاهيم نفسها ومفردات أخرى. »

    يُقال في اجتماع زبون ؛ واعرضوا المطابقة بليد/تويغ وإلوكوينت/دوكترين.

    نموذج نسخ-لصق — متحكم سيمفوني + تويغ + دوكترين (كود مُختبَر)

    findBy(['categorie' => 'informatique']);
            return $this->render('produits/index.html.twig', ['produits' => $produits]);
        }
    }
    
    // templates/produits/index.html.twig
    // {% extends 'base.html.twig' %}
    // {% block body %}{% for p in produits %}
  • {{ p.nom }} — {{ p.prix }} DA
  • {% endfor %}{% endblock %}

    مشروع مقاولة

    سيمفوني كامل : صرامة ومكونات أمن/نماذج وقابلية تتبع — مثل زبون رياد.

    مشروع PHP قديم

    التقطوا مكونا (وحدة تحكم أو تحقق أو توجيه) عبر Composer دون ترحيل كل شيء.

    فريق لارافيل

    ترجموا : بليد←تويغ وإلوكوينت←دوكترين — والصعود سريع.

    اختيار يُحسم

    بدء سريع ومستقل : لارافيل ؛ ونظام مقاولاتي كبير : سيمفوني.

    حذر: الصرامة لا تحصن : تحققوا من النماذج (مكون Validator)، وحافظوا على تويغ مُهرَّبا افتراضيا وعلى الأسرار في .env، وليست في الكود أبدا. محتوى تعليمي، وأمثلة ببيانات وهمية.

    ✓ ممارسات جيدة

    • رؤية سيمفوني مكونات قابلة لإعادة الاستعمال.
    • إيجاد المفاهيم المعروفة بأسماء أخرى.
    • الاختيار حسب المشروع والسوق، دون تعصب.

    ✗ أخطاء شائعة

    • معارضة لارافيل وسيمفوني كمعسكرين.
    • وضع المنطق في تويغ.
    • القلق على «الاختيار الصحيح» النهائي.

    النقاط الأساسية

    • سيمفوني = إطار عمل PHP الكبير الآخر : صارم ووحدي ومقاولة. مكونات قابلة لإعادة الاستعمال (حتى من لارافيل).
    • تويغ : {{ }} و{% for %} وتهريب آلي. دوكترين : كيانات بدل SQL وعلاقات وهجرات.
    • دوكترين (راسم البيانات) مقابل إلوكوينت (السجل النشط) : مقاربتان ممتازتان.
    • المفاهيم نفسها (MVC و ORM والقوالب والتوجيه والأمن) — قابلة للنقل. إتقان أحدهما يسهل الآخر.

    تحدي 48 ساعة — طبّق غدا

    اعرضوا قائمة واحدة عبر تويغ + دوكترين (متحكم ← findBy ← حلقة {% for %}) وثبتوا مكونا واحدا وحده عبر Composer.

    قائمة الخروج من القسم
    • أستطيع ذكر المكونات وتويغ ودوكترين.
    • أعرف شرح راسم البيانات مقابل السجل النشط.
    • عندي صفحة سيمفوني واحدة تعرض كيانات.
    تقييم ذاتي 1-5 : هل قوالبي دون منطق ؟هل أستطيع الانتقال من إلوكوينت إلى دوكترين دون ذعر ؟

    أسئلة شائعة

    لارافيل أم سيمفوني : أيهما نتعلم — وهل هو مهم هكذا ؟

    كلاهما ممتاز وناضج ؛ وما يهم أكثر هو المفاهيم القابلة للنقل (MVC و ORM والقوالب والتوجيه والأمن). لارافيل : سهل ومنتج وودود — يُنصح به غالبا للبدء. سيمفوني : صارم ووحدي ومقاولة/مشاريع كبيرة. اختاروا حسب المشروع والفريق والسوق المحلي — واعرفوا الانتقال من أحدهما إلى الآخر : وهو ممكن على وجه الدقة لأن الأفكار نفسها.

    لماذا سيمفوني مجموعة «مكونات» — ولماذا هذا مهم ؟

    لأن كل مكون (توجيه ونماذج وأمن ووحدة تحكم…) مستقل ومُختبَر منفصلا وقابل لإعادة الاستعمال خارج سيمفوني عبر Composer — وحدية ومرونة (إطار عمل كامل أو لَبِنات ملتقطة) ودور ركيزة النظام (تستعمله مشاريع أخرى). إنها بنية جيدة على مقياس إطار العمل، وصندوق أدوات لكل مشروع PHP.

    تحقّق من فهمك

    ما السمة الكبرى لسيمفوني ؟

    موارد إضافية (اختياري، للتعمّق أكثر)

    اختبار المستوى 4أسئلة جديدة وأصعب للتحقق من مكتسباتك