4.3سيمفوني (Symfony) : المكونات وتويغ (Twig) ودوكترين (Doctrine)
الأساسي في 30 ثانية
- سيمفوني = مكونات قابلة لإعادة الاستعمال : توجيه ونماذج وأمن ووحدة تحكم — تُستعمل معا أو منفصلة، حتى خارج سيمفوني.
- تويغ + دوكترين : قوالب
{{ }} و{% for %}مُهرَّبة افتراضيا، وقاعدة تُعالَج بكيانات كائنات باستعلامات مُعامَلة آلية. - منعكس رياد : المفاهيم نفسها مثل لارافيل (MVC و ORM والقوالب) — إتقان أحدهما يسهل الآخر، والاختيار حسب المشروع والسوق.
حالة مصغرة متواصلة — رياد يكتشف سيمفوني عند زبون
يفرض زبون مقاولة خاص برياد، في قسنطينة، سيمفوني لمكتب خلفي : صرامة ومكونات مجربة وقابلية تتبع. يجد رياد معالمه من لارافيل بأسماء أخرى — مسارات نحو متحكمات وقوالب تويغ بدل بليد وكيانات دوكترين بدل نماذج إلوكوينت — ويلتقط حتى مكون سيمفوني (وحدة التحكم) لسكربت قديم. ثالث محطة في الخيط الرابط : إطارا عمل والأفكار نفسها واحترافية قابلة للتكيف.
تتمة حالة 4.1-4.2 — يصبح رياد ثنائي اللغة لارافيل/سيمفوني.
1. بنية بمكونات
سيمفوني (Symfony) هو إطار عمل PHP الكبير الآخر، المحبوب في المقاولة والمشاريع الكبيرة : صارم ووحدي ومصمم للتعقيد. وسمته : مكونات مستقلة (توجيه ونماذج وأمن ووحدة تحكم و HTTP وتحقق وحقن تبعيات…)، كل مُختبَر منفصلا وقابل لإعادة الاستعمال خارج سيمفوني عبر Composer. كثير من المشاريع — ومنها لارافيل — تستعمل مكونات سيمفوني تحت الغطاء : إنه ركيزة النظام. نعتمده إطار عمل كاملا أو بالتقاط لَبِنات.
2. تويغ ودوكترين
تويغ (Twig) هو محرك القوالب : {{ variable }} و{% for %} و{% if %} ووراثة — مع تهريب آلي (ضد XSS)، محبوب أبعد بكثير من سيمفوني. ودوكترين (Doctrine) هو الـ ORM المرتبط : نعالج كيانات (كائنات) بدل SQL، بمعامَلة آلية وعلاقات وهجرات. وفارق تصميم : يتبع دوكترين نمط «راسم البيانات» (كيانات منفصلة عن الحفظ) بينما يتبع إلوكوينت «السجل النشط» (النماذج تحفظ نفسها) — وفلسفتان ممتازتان.
لارافيل (سهل ومنتج) مقابل سيمفوني (صارم ومقاولة) : خياران ناضجان واحترافيان، والمفاهيم نفسها (MVC والتوجيه و ORM والقوالب والأمن). يختار رياد حسب السياق — بدء سريع أو قيد مقاولة أو سوق محلي — دون قلق : الأساسي ينتقل.
🔎 مثال ملموس — 🔎 مثال ملموس — فهرس سيمفوني : متحكم وتويغ ودوكترين
حركات رياد الثلاث جهة سيمفوني :
المتحكم (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 مدمج باليد في المتحكم.
رد فعل: كيانات للعمل، ومستودع للاستعلامات.
- لارافيل مقابل سيمفوني
- إطارا عمل ممتازان ناضجان : لارافيل سهل/منتج ؛ وسيمفوني صارم/وحدي/مقاولة. المفاهيم نفسها قابلة للنقل.
مثال بسيط: ينتقل رياد من أحدهما إلى الآخر بترجمة بليد↔تويغ وإلوكوينت↔دوكترين.
ما ليس كذلك: اختيار قلق ونهائي «مدى الحياة».
رد فعل: الاختيار حسب المشروع والفريق والسوق المحلي.
في التطبيق — عمليا — اكتشاف سيمفوني ومكوناته
- افهموا الفلسفة : صارم ووحدي وبمكونات قابلة لإعادة الاستعمال، ومحبوب في المقاولة.
- حددوا تويغ ({{ }} و{% for %} وتهريب آلي) ودوكترين (كيانات بدل SQL وعلاقات وهجرات).
- لاحظوا فارق الـ ORM : دوكترين (راسم البيانات) مقابل إلوكوينت (السجل النشط).
- حددوا اختيار لارافيل/سيمفوني (إنتاجية مقابل صرامة/مقاولة) : المفاهيم تنتقل.
نص جاهز للقول — الطمأنة على اختيار سيمفوني (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 دون ترحيل كل شيء.
فريق لارافيل
ترجموا : بليد←تويغ وإلوكوينت←دوكترين — والصعود سريع.
اختيار يُحسم
بدء سريع ومستقل : لارافيل ؛ ونظام مقاولاتي كبير : سيمفوني.
.env، وليست في الكود أبدا. محتوى تعليمي، وأمثلة ببيانات وهمية.✓ ممارسات جيدة
- رؤية سيمفوني مكونات قابلة لإعادة الاستعمال.
- إيجاد المفاهيم المعروفة بأسماء أخرى.
- الاختيار حسب المشروع والسوق، دون تعصب.
✗ أخطاء شائعة
- معارضة لارافيل وسيمفوني كمعسكرين.
- وضع المنطق في تويغ.
- القلق على «الاختيار الصحيح» النهائي.
النقاط الأساسية
- سيمفوني = إطار عمل PHP الكبير الآخر : صارم ووحدي ومقاولة. مكونات قابلة لإعادة الاستعمال (حتى من لارافيل).
- تويغ : {{ }} و{% for %} وتهريب آلي. دوكترين : كيانات بدل SQL وعلاقات وهجرات.
- دوكترين (راسم البيانات) مقابل إلوكوينت (السجل النشط) : مقاربتان ممتازتان.
- المفاهيم نفسها (MVC و ORM والقوالب والتوجيه والأمن) — قابلة للنقل. إتقان أحدهما يسهل الآخر.
تحدي 48 ساعة — طبّق غدا
اعرضوا قائمة واحدة عبر تويغ + دوكترين (متحكم ← findBy ← حلقة {% for %}) وثبتوا مكونا واحدا وحده عبر Composer.
- أستطيع ذكر المكونات وتويغ ودوكترين.
- أعرف شرح راسم البيانات مقابل السجل النشط.
- عندي صفحة سيمفوني واحدة تعرض كيانات.
أسئلة شائعة
لارافيل أم سيمفوني : أيهما نتعلم — وهل هو مهم هكذا ؟
كلاهما ممتاز وناضج ؛ وما يهم أكثر هو المفاهيم القابلة للنقل (MVC و ORM والقوالب والتوجيه والأمن). لارافيل : سهل ومنتج وودود — يُنصح به غالبا للبدء. سيمفوني : صارم ووحدي ومقاولة/مشاريع كبيرة. اختاروا حسب المشروع والفريق والسوق المحلي — واعرفوا الانتقال من أحدهما إلى الآخر : وهو ممكن على وجه الدقة لأن الأفكار نفسها.
لماذا سيمفوني مجموعة «مكونات» — ولماذا هذا مهم ؟
لأن كل مكون (توجيه ونماذج وأمن ووحدة تحكم…) مستقل ومُختبَر منفصلا وقابل لإعادة الاستعمال خارج سيمفوني عبر Composer — وحدية ومرونة (إطار عمل كامل أو لَبِنات ملتقطة) ودور ركيزة النظام (تستعمله مشاريع أخرى). إنها بنية جيدة على مقياس إطار العمل، وصندوق أدوات لكل مشروع PHP.
ما السمة الكبرى لسيمفوني ؟