Twig

من موسوعة حسوب
مراجعة 09:23، 6 مايو 2021 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق)

Twig هو محرك قوالب (template engine) حديث للغة PHP، ويتميز بما يلي:

  • السرعة: يصرِّف محرك Twig القوالبَ لتكون شيفرة PHP بسيطة ومحسنة، وقد قل سقف تلك الشيفرات إلى الحد الأدنى موازنة بشيفرة PHP العادية.
  • الأمان: يحتوي Twig على وضع صندوق الاختبار (Sandbox) من أجل تقييم شيفرات القوالب غير الموثوق بها، وهذا يسمح لـ Twig أن يُستخدم كلغة قوالب للتطبيقات التي قد يعدِّل المستخدمون فيها تصميم القالب نفسه.
  • المرونة: يقوم Twig على معجم (lexer) ومحلل (parser) يتسمان بالمرونة، وهذا يسمح للمطور أن يعرف وسومه ومرشحاته الخاصة، وينشئ DSL الخاص به.

وفي حين أن لغة PHP نفسها يُنظر إليها أحيانًا على أنها محرك قوالب وبدأت كلغة للقوالب، إلا أنها لم تتطور في نفس المسار الطبيعي للغة قالبية، بل إنها لا تدعم أكثر المزايا التي يجب أن تكون في محركات القوالب الحديثة، والتي منها على سبيل المثال ما يلي:

  • الاختصار: تمتاز لغة PHP أن مصطلحاتها كثيرة، خاصة في تهريب الخرج:
<?php echo $var ?>
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

أما محرك القوالب Twig على النقيض من هذا فله بنية لغوية محددة من أجل تيسير قراءة القوالب:

{{ var }}
{{ var|escape }}
{{ var|e }}         {# اختصار لتهريبِ متغير #}
  • بنية لغوية موجهة للقوالب: يحتوي Twig على اختصارات للأنماط المتكررة مثل عرض نص افتراضي حين تكرر على مصفوفة فارغة:
{% for user in users %}
    * {{ user.name }}
{% else %}
    No users have been found.
{% endfor %}
  • كثرة المزايا: يدعم Twig كل ما تحتاج إليه كي تبني قوالب قوية، مثل الوراثة المتعددة والكتل والتهريب التلقائي للخرج وغيرها:
{% extends "layout.html" %}

{% block content %}
    Content of the page...
{% endblock %}
  • سهولة التعلم: البنية اللغوية في Twig سهلة التعلم وقد تم تحسينها كثيرًا ليسمح لمصممي الويب بإنهاء مهامهم بسرعة وسهولة.

رغم أن لغة PHP هي اللغة التي تجد فيها مشاريع للقوالب أكثر من غيرها إلا أن أغلبها لم يصمم ليحقق النتائج المثلى لتطوير الويب، والتي من بينها ما يلي:

  • قابلية التوسع: Twig مرن إلى الحد الذي يكفي جميع احتياجاتك حتى المعقدة منها، ذلك أنك تستطيع استخدام البنيات الخاصة بلغتك من وسوم ومرشحات ودوال وعوامل كي تنشئ لغة DSL خاصة بك، وذلك بفضل المعمارية المفتوحة.
  • وحدات مختبَرة: لقد تم اختبار جميع وحدات Twig، فالمكتبة مستقرة وجاهزة للاستخدام في المشاريع الكبيرة.
  • التوثيق: Twig موثَّق بالكامل، مع كتاب أونلاين وتوثيق كامل لواجهة برمجة التطبيقات API.
  • الأمان: يحتوي Twig على العديد من مزايا الأمان، منها على سبيل المثال:
    • صندوق الاختبار: يستطيع Twig أن يقيِّم أي قالب داخل بيئة صندوق الاختبار حيث يكون للمستخدم وصول لمجموعة محدودة من الوسوم والمرشحات وتوابع الكائنات التي يعرِّفها المطور، ويمكن أن يُفعَّل صندوق الاختبار تفعيلًا عامًا، أو محليًا لبعض القوالب:
{{ include('page.html', sandboxed = true) }}
    • التهريب التلقائي للخرج: تستطيع تفعيل التهريب التلقائي للخرج تفعيلًا عامًا (global) أو لكتلة من الشيفرة، وذلك كي تضمن عدم التعرض لمشاكل:
{% autoescape "html" %}
    {{ var }}
    {{ var|raw }}     {# var لن يُهرَّب#}
    {{ var|escape }}  {# var لن يُهرَّب تهريبًا مضاعفًا #}
{% endautoescape %}
  • السرعة: أحد أهداف محرك Twig هو أن يكون سريعًا قدر الإمكان، ولتحقيق ذلك فإن Twig يصرِّف القوالب إلى شيفرة PHP محسنة، ويُقلَّل الحمل الزائد إلى الحد الأدنى موازنة بشيفرة PHP العادية.
  • رسائل خطأ واضحة: يخرِج Twig رسائل مفيدة فيها اسم الملف ورقم السطر الذي تحدث فيه المشكلة كلما كانت لديك مشكلة في الصياغة داخل القالب، وذلك يسهل عملية التنقيح كثيرًا.

مقدمة عن Twig

مقدمة حول محرك القوالب Twig تعرض ميزاته وشروط تثبيته وكيفية بدء استخدامه.

تصميم القوالب

يشرح هذا القسم البنيةَ اللغوية لمحرك القوالب ودلالياته وسيكون ذا نفع عظيم كمرجع لأولئك الذين ينشئون قوالب Twig.

واجهة برمجة التطبيقات API

يشرح هذا القسم واجهة برمجة التطبيقات لمحرك القوالب Twig، وسيكون مفيدًا كمرجع لأولئك الذين يستخدمون واجهة القالب للتطبيق، فهو لا يشرح لغة القالب نفسه، وليس للذين ينشؤون قوالب Twig.

توسيع Twig

شرح كيفية توسيع عمل محرك Twig مثل إضافة وسوم إضافية ومرشحات واختبارات وعوامل operators ومتغيرات عامة ودوال وغيرها.

المكونات الداخلية

هذا القسم مفيد لمن يرغب في معرفة كيف يعمل Twig في الحقيقة.

الوصفات

يعرض هذا القسم وصفات سرية تستحق الإطلاع عليها قد تساعدك في عملك مع محرك قوالب Twig ووضبطه وتخصيص استخدامك المتقدم له.

معايير كتابة الشيفرة

يذكر هذا القسم معايير كتابة الشيفرة المتبعة عند استعمال Twig.

الوسوم Tags

الوسوم في Twig هي بنيات تحكم، تتحكم في طريقة عمل القوالب وسيرها، وهي تتكون من شرطيات مثل if/elseif/else وحلقات تكرارية وكُتل. وتظهر الوسوم داخل أزواج من كُتل {%  %}، وتكون كتلة الإغلاق {% end %} حيث تتبع end باسم الوسم. وفيما يلي الوسوم الموجودة في محرك القوالب Twig:

المرشحات Filters

تسمح المرشحات filters بتعديل بيانات متغير قبل استخدامه، وأشهر استخدام لها هو عند إخراج المحتوى، كما تستطيع استعمالها عند إسناد قيمة المتغير إلى متغير آخر. وفيما يلي المرشحات التي في محرك القوالب Twig:

الدوال Functions

تُستخدم الدوال لإجراء عملية ما، وتُستدعى بأسمائها متبوعة بأقواس، وقد تحتوي على وسيط واحد أو أكثر داخل تلك الأقواس. فيما يلي الدوال الموجودة في محرك القوالب Twig:

الاختبارات Tests

تُستخدم الاختبارات مع العامل is لاختبار متغير مقابل تعبير ما، ويكون المعامَل operand الأيسر للعامل is هو الشيء المختبَر، والأيمن هو اسم الاختبار. وفيما يلي الاختبارات الموجودة في محرك القوالب Twig:

العوامل Operators

إليك العوامل الموجودة في محرك القوالب Twig:

مصادر