السلام عليكم
نظام القوالب الذي سأتكلم عنه هو الـ Smarty ستجد مدى قوته و تعقيده و بساطته بآن معاً و من المتوقع أن تطوره و تدعمه ياهوو إذا انتقلت إلى بيئة الـ PHP .
http://public.yahoo.com/~radwin/talk...phpcon2002.htm
بدايته: كانت من عام الـ 1999 على يد مبرمج روسي Andrei Zmievski <andrei@php.net> .
الفائدة منه:
1- فصل القالب (واجهة المستخدم) عن البرمجة، لتيسير العمل و البرمجة .
2- عمل ما يسمى Cashing و هي أهم ميزة به حيث أنها ستخفف العبئ الكبير على السيرفرات التي تستخدم قواعد بيانات بكثرة لعرضها.
ماهو:
Smarty هو عبارة عن عنصر Class .
كيفية عمله:
يقوم هذا العنصر بعمل Compile (ترجمة) للقالب الذي أعطيته إياه (الذي يحوي عادة على كود للغة الـ Smarty) و يولد ملف الكاش (ملف PHP) ثم يقوم بتنفيذه ليطبع الخرج.
من هنا تكمن أهمية الكاش فمثلاً لو كان عندنا موقع ضخم فيه كمية كبيرة من البيانات و له عدد كبير من الزيارات هنا تكمن أهمية الكاش فمثلاً لو كان هناك صفحة تعرض الفتاوى الموجودة فلكل مستخدم ستقوم بالاتصال بقاعدة البيانات و عمل لووب تكرار لطباعة عناوين الفتاوى المتوفرة و إنشاء صفحة الخرج فعندئذٍ ستؤدي إلى إرهاق السيرفر!.
و من الأمور التي يجب أخذها بالحسبان هو أنه يدعم أن تضع جزء ديناميكي بالصفحة بالإضافة إلى التحكم بالكاش من حذف و تحديد مدة الصلاحية و كونه يدعم حفظ عدة نسخ كاش لقالب واحد.
مكونات اللغة:
Modifiers : وظيفتها تغيير و تحويل النص المعطي لها، مثل:
<html>
<title>{$title|capitalize}</title>
.....
هنا سيقوم بتحويل نص المتغير بحيث يحول أول حرف من بداية كل كلمة إلى حرف كبير.
Filters :يقوم السمارتي بإعطائها النص لتقوم بعملية الفلترة له أو التعديل و هناك نوعين رئيسيين للفلاتر هما الـ postfilter و prefilter .
تستخدم عادة لحماية خرج الصفحة مثل حماية عناوين الأيميل أو حماية الارتباطات أو حذف بعض الأمور أو إضافة بيانات معينة للخرج ....
Functions : توابع السمارتي تعطيك تحكماً عاماً باللغة.
مثلاً:
{section name=abc loop=$swalif}
Looping: {$swalif[abc]}<br>
{/section}
أتمنى أن تطرحو رأيكم بعد أن تختبروا إمكاناته و تطلعو على لغته و مدى أمكانياتها الرائعة.
لأن هناك من يراه نظام قوالب ممتاز و منهم من يراه معقد قد يرهق السيرفر !
مقارنة بالسرعة بين أنظمة القوالب المختلفة http://www.phpinsider.com/php/code/Smarty/benchmarks/
smarty.php.net