Twig
Twig هو محرك قوالب template engine حديث للغة PHP، ويتميز بما يلي:
- السرعة: يصرِّف محرك Twig القوالبَ لتكون شيفرة PHP بسيطة ومحسنة، وقد قل سقف تلك الشيفرات إلى الحد الأدنى موازنة بشيفرة PHP العادية.
- الأمان: يحتوي Twig على وضع صندوق الاختبار Sandbox من أجل تقييم شيفرات القوالب غير الموثوق بها، وهذا يسمح لـ Twig أن يُستخدم كلغة قوالب للتطبيقات التي قد يعدِّل المستخدمون فيها تصميم القالب نفسه.
- المرونة: يقوم Twig على معجم lexer ومحلل parser يتسمان بالمرونة، وهذا يسمح للمطور أن يعرف وسومه ومرشحاته الخاصة، وينشئ DSL الخاص به.
ميزات Twig
في حين أن لغة 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:
- apply
- autoescape
- block
- cache
- deprecated
- do
- embed
- extends
- flush
- for
- from
- if
- import
- include
- macro
- sandbox
- set
- use
- verbatim
- with
المرشحات Filters
تسمح المرشحات filters بتعديل بيانات متغير قبل استخدامه، وأشهر استخدام لها هو عند إخراج المحتوى، كما تستطيع استعمالها عند إسناد قيمة المتغير إلى متغير آخر. وفيما يلي المرشحات التي في محرك القوالب Twig:
- abs
- batch
- capitalize
- column
- convert_encoding
- country_name
- currency_name
- currency_symbol
- data_uri
- date
- date_modify
- default
- escape
- filter
- first
- format
- format_currency
- format_date
- format_datetime
- format_number
- format_time
- html_to_markdown
- inline_css
- inky_to_html
- join
- json_encode
- keys
- language_name
- last
- length
- locale_name
- lower
- map
- markdown_to_html
- merge
- nl2br
- number_format
- raw
- reduce
- replace
- reverse
- round
- slice
- slug
- sort
- spaceless
- split
- striptags
- timezone_name
- title
- trim
- u
- upper
- url_encode
الدوال Functions
تُستخدم الدوال لإجراء عملية ما، وتُستدعى بأسمائها متبوعة بأقواس، وقد تحتوي على وسيط واحد أو أكثر داخل تلك الأقواس. فيما يلي الدوال الموجودة في محرك القوالب Twig:
- attribute
- block
- constant
- cycle
- date
- dump
- html_classes
- include
- max
- min
- parent
- random
- range
- country_timezones
- template_from_string
الاختبارات Tests
تُستخدم الاختبارات مع العامل is
لاختبار متغير مقابل تعبير ما، ويكون المعامَل operand الأيسر للعامل is
هو الشيء المختبَر، والأيمن هو اسم الاختبار. وفيما يلي الاختبارات الموجودة في محرك القوالب Twig:
العوامل Operators
إليك العوامل الموجودة في محرك القوالب Twig:
مصادر
- هذا الدليل مستقى من توثيق Twig الرسمي.