Twig لـ PHP: الدليل الشامل لمحرك القوالب من Symfony
Twig هو محرك قوالب حديث وسريع وآمن للغة PHP، تم تطويره بواسطة فريق Symfony. يوفر للمطورين بناء جملة قويًا وسهل الفهم لفصل منطق العرض (القوالب) عن منطق الأعمال الخاص بالتطبيق. يحل Twig المشكلة الأساسية في تطوير الويب: خلط كود PHP مع HTML، مما يؤدي إلى "كود spaghetti" ويقلل من قابلية القراءة والصيانة للمشروع.
الهدف الرئيسي لـ Twig هو جعل القوالب نظيفة وآمنة وسهلة القراءة. على عكس PHP الخام، يحد Twig من قدرة المطور على تنفيذ كود عشوائي داخل القالب، مما يمنع الثغرات الأمنية الشائعة مثل هجمات XSS (Cross-Site Scripting)، وذلك من خلال الهروب التلقائي للمخرجات. بدلاً من التركيبات المعقدة <?php foreach(...): ?>، تستخدم {% for item in items %} المختصرة، وبدلاً من <?= $var ?> تستخدم {{ var }}. هذا يجعل القوالب في متناول مصممي الواجهات ومطوري الواجهة الأمامية الذين لا يعرفون PHP.
Twig هو المعيار الفعلي لإطار العمل Symfony، ولكنه يتكامل أيضًا بشكل ممتاز مع Laravel (عبر حزمة twigbridge) و Drupal و WordPress، ويمكن استخدامه كمكتبة مستقلة في أي مشروع PHP. بفضل ميزات مثل وراثة القوالب، والماكرو، والبيئة الآمنة (sandbox)، والهروب التلقائي، يعتبر Twig واحدًا من أشهر محركات القوالب في نظام PHP البيئي.
التنصيب
يتم تنصيب Twig عبر مدير الحزم Composer. تأكد من تثبيت Composer بشكل عام على جهازك.
composer require twig/twig:^3.0
بعد تنفيذ الأمر، سيظهر في مشروعك مجلد vendor/ وملف composer.json مع إضافة التبعية. لتحميل الفئات تلقائيًا، استخدم الملف القياسي vendor/autoload.php.
بداية سريعة: مثال عملي بسيط
لننشئ قالبًا بسيطًا ونعرضه. هيكل المشروع:
project/
├── templates/
│ └── hello.html.twig
├── vendor/
└── index.php
القالب: templates/hello.html.twig
<!DOCTYPE html>
<html>
<head>
<title>ترحيب</title>
</head>
<body>
<h1>مرحبًا، {{ name }}!</h1>
<p>اليوم هو {{ "now"|date("d.m.Y") }}.</p>
</body>
</html>
سكريبت PHP: index.php
<?php
require_once 'vendor/autoload.php';
use Twig\Environment;
use Twig\Loader\FilesystemLoader;
// 1. إنشاء محمل يشير إلى مجلد القوالب
$loader = new FilesystemLoader('templates');
// 2. إنشاء بيئة Twig
$twig = new Environment($loader, [
'cache' => 'cache', // مسار التخزين المؤقت (موصى به)
'auto_reload' => true, // إعادة التحميل تلقائيًا عند التغيير (للتطوير)
]);
// 3. عرض القالب مع تمرير المتغيرات
echo $twig->render('hello.html.twig', ['name' => 'العالم']);
?>
افتح index.php في المتصفح. سترى صفحة بعنوان "مرحبًا، العالم!" والتاريخ الحالي.
الدوال والطرق الأساسية في Twig
فيما يلي أهم الدوال والتركيبات التي تشكل أساس العمل مع Twig.
1. Environment::render() — عرض القالب
التوقيع: public function render(string $name, array $context = []): string
الوصف: الطريقة الأساسية لعرض القالب. تأخذ اسم ملف القالب (نسبة إلى جذر المحمل) ومصفوفة ترابطية من المتغيرات (السياق) التي ستكون متاحة داخل القالب.
<?php
// داخل القالب 'profile.html.twig' ستكون المتغيرات متاحة