الفرق بين المراجعتين ل"Twig"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
 +
Twig هو محرك قوالب template engine حديث للغة [[PHP]]، ويتميز بما يلي:
  
 +
* '''السرعة''': يصرِّف محرك Twig القوالبَ لتكون شيفرة PHP بسيطة ومحسنة، وقد قل سقف تلك الشيفرات إلى الحد الأدنى موازنة بشيفرة PHP العادية.
 +
* '''الأمان''': يحتوي Twig على وضع صندوق الاختبار Sandbox من أجل تقييم شيفرات القوالب غير الموثوق بها، وهذا يسمح لـ Twig أن يُستخدم كلغة قوالب للتطبيقات التي قد يعدِّل المستخدمون فيها تصميم القالب نفسه.
 +
* '''المرونة''': يقوم Twig على معجم lexer ومحلل parser يتسمان بالمرونة، وهذا يسمح للمطور أن يعرف وسومه ومرشحاته الخاصة، وينشئ DSL الخاص به.
  
 +
== ميزات Twig ==
 +
في حين أن لغة [[PHP]] نفسها يُنظر إليها أحيانًا على أنها محرك قوالب وبدأت كلغة للقوالب، إلا أنها لم تتطور في نفس المسار الطبيعي للغة قالبية، بل إنها لا تدعم أكثر المزايا التي يجب أن تكون في محركات القوالب الحديثة، والتي منها على سبيل المثال ما يلي:
 +
 +
=== الاختصار ===
 +
تمتاز لغة [[PHP]] أن مصطلحاتها كثيرة، خاصة في تهريب الخرج:<syntaxhighlight lang="php">
 +
<?php echo $var ?>
 +
<?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
 +
</syntaxhighlight>أما محرك القوالب Twig على النقيض من هذا فله بنية لغوية محددة من أجل تيسير قراءة القوالب:<syntaxhighlight lang="twig">
 +
{{ var }}
 +
{{ var|escape }}
 +
{{ var|e }}        {# اختصار لتهريب متغير #}
 +
 +
</syntaxhighlight>
 +
 +
=== بنية لغوية موجهة للقوالب ===
 +
يحتوي Twig على اختصارات للأنماط المتكررة مثل عرض نص افتراضي حين تكرر على مصفوفة فارغة:<syntaxhighlight lang="twig">
 +
{% for user in users %}
 +
    * {{ user.name }}
 +
{% else %}
 +
    No users have been found.
 +
{% endfor %}
 +
</syntaxhighlight>
 +
 +
=== كثرة المزايا ===
 +
يدعم Twig كل ما تحتاج إليه كي تبني قوالب قوية، مثل الوراثة المتعددة والكتل والتهريب التلقائي للخرج وغيرها:<syntaxhighlight lang="twig">
 +
{% extends "layout.html" %}
 +
 +
{% block content %}
 +
    Content of the page...
 +
{% endblock %}
 +
 +
</syntaxhighlight>
 +
 +
=== سهولة التعلم ===
 +
البنية اللغوية في Twig سهلة التعلم وقد تم تحسينها كثيرًا ليسمح لمصممي الويب بإنهاء مهامهم بسرعة وسهولة.
 +
 +
رغم أن لغة [[PHP]] هي اللغة التي تجد فيها مشاريع للقوالب أكثر من غيرها إلا أن أغلبها لم يصمم ليحقق النتائج المثلى لتطوير الويب، والتي نكمل الحديث عنا بالنقاط التالية.
 +
 +
=== قابلية التوسع ===
 +
Twig مرن إلى الحد الذي يكفي جميع احتياجاتك حتى المعقدة منها، ذلك أنك تستطيع استخدام البنيات الخاصة بلغتك من وسوم ومرشحات ودوال وعوامل كي تنشئ لغة DSL خاصة بك، وذلك بفضل المعمارية المفتوحة.
 +
 +
=== وحدات مختبرة ===
 +
لقد تم اختبار جميع وحدات Twig، فالمكتبة مستقرة وجاهزة للاستخدام في المشاريع الكبيرة.
 +
 +
=== التوثيق ===
 +
Twig موثَّق بالكامل، مع كتاب أونلاين وتوثيق كامل لواجهة برمجة التطبيقات API.
 +
 +
=== الأمان ===
 +
يحتوي Twig على العديد من مزايا الأمان، منها على سبيل المثال:
 +
 +
==== صندوق الاختبار ====
 +
يستطيع Twig أن يقيِّم أي قالب داخل بيئة صندوق الاختبار حيث يكون للمستخدم وصول لمجموعة محدودة من الوسوم والمرشحات وتوابع الكائنات التي يعرِّفها المطور، ويمكن أن يُفعَّل صندوق الاختبار تفعيلًا عامًا، أو محليًا لبعض القوالب:<syntaxhighlight lang="twig">
 +
{{ include('page.html', sandboxed = true) }}
 +
</syntaxhighlight>
 +
 +
==== التهريب التلقائي للخرج ====
 +
تستطيع تفعيل التهريب التلقائي للخرج تفعيلًا عامًا global أو لكتلة من الشيفرة، وذلك كي تضمن عدم التعرض لمشاكل:<syntaxhighlight lang="twig">
 +
{% autoescape "html" %}
 +
    {{ var }}
 +
    {{ var|raw }}    {# var عدم تهريب #}
 +
    {{ var|escape }}  {# var تأكيد بعدم تهريب #}
 +
{% endautoescape %}
 +
</syntaxhighlight>
 +
 +
=== السرعة ===
 +
أحد أهداف محرك Twig هو أن يكون سريعًا قدر الإمكان، ولتحقيق ذلك فإن Twig يصرِّف القوالب إلى شيفرة [[PHP]] محسنة، ويُقلَّل الحمل الزائد إلى الحد الأدنى موازنة بشيفرة [[PHP]] العادية.
 +
 +
=== رسائل خطأ واضحة ===
 +
يخرِج Twig رسائل مفيدة فيها اسم الملف ورقم السطر الذي تحدث فيه المشكلة كلما كانت لديك مشكلة في الصياغة داخل القالب، وذلك يسهل عملية التنقيح كثيرًا.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
 
{{:Twig/Topics}}
 
{{:Twig/Topics}}
 
==مصادر==
 
==مصادر==

مراجعة 13:08، 6 مايو 2021

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:

المرشحات Filters

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

الدوال Functions

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

الاختبارات Tests

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

العوامل Operators

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

مصادر