بسم الله الرحمن الرحيم
اغلب مبرمجى php حاليا يستخدمون templating systems لفصل كود الـ php ( اى الـ logic) عن وسوم الـ HTML ( اى الـ view )
الفصل بالشكل دة بيوفر سهولة فى ادارة الأكواد بحيث ان المصمم عارف الملفات الى حيشتغل عليها و لا يهتم باى حال من الأحوال بالملفات الى فيها اكواد الـ php الى بيستخدمها المبرمج.
بالتالى تجنبنا احتمالية ان المصمم ممكن يغير شئ داخل الـ logic مما يترتب عليه عطل فى عمل التطبيق بتاعنا و صعوبة اكتشاف الخطأ.
اصلا الموضوع مش لمناقشة كيفية استخدام الـ templating systems لكن دى كانت مقدمة تعريفية.
يتوافر عدد كبير من الـ template engines منها :
النوع دة من الـ template engines بيعتمد على الـ Regular Expressions فى انه بيعمل compile ( او استبدال إن صح التعبير ) للأكواد الخاصة بالـ templating بأكواد الـ php او القيم المناسبة , كل دة بيحصل فى وقت التشغيل ( on run time ).
و كما هو معروف ان لغة php فى كيفية عملها تعتمد على ان اكواد الـ php بيتم عمل compile لها بواسطة الـ Interpreter (المفسر ) اثناء الـ run time ثم يتم تنفيذها إن لم تظهر اخطاء.
بالتالى استخدامى النوع المذكور اعلاه من الـ templating engines بيسبب بطء فى عمل التطبيق بتاعى و زيادة فى استهلاك موارد الـ Server .
خصوصا فى جزئية استخدام الـ Regular Expressions , حيث بينصح بعدم استخدامها الا عند نفاذ السبل الممكن حل المشكلة بدونها.
( المبرمجين القادمين من الـ Perl متعودين عليها و بيستخدموها بشراهة )
طيب هنا احنا ليه بنستخدم الحجات دى رغم ان لغة php نفسها templating language
ايه الفرق لمة تكتب control statments ( زى if , while , for .. ) بـ syntax ما مختلف عن المستخدم فى php و استخدام syntax الخاص بـ php نفسها .
php وفرت اشكال عدة لكتابة الأكواد بتدى مرونة و راحة للمستخدم و كمثال :
انت ممكن تكتب جملة if بالشكل دة
if ( 1 > $var ): //some code endif;
دة نفس الشكل المتبع فى عدة templating systems و من اسباب الأقبال عليها.
و نفس الـ syntax دى ممكن تستخدمها مع for و foreach و while و ... الخ
انت لو استخدمت الحجات دى حتديك اداء اسرع بالطبع و بل سهولة ليك كمبرمج او للمصمم فى فهم مجرى الأمور و اتفاقكم على مفهوم واحد.
بس بردو مش حننكر ان كان فى ميزات تانية بتقدمها الـ templating systems التقليدية مش حنعرف نلاقيها جاهزة فى php نفسها بالتالى ظهرت مشاريع لتطوير Templating systems هدفها جمع مزايا النوعين فى شئ واحد و كان منها Savant
Savant بالفعل نجح فى جمع كل المزايا فى شئ واحد و تتوافرله الكثير من الـ plugins و ايضا بيسمحلك انك تتوسع بعمل الـ compiler الخاص بك إن اردت , لكن Savant فى حد زاته لا يقوم يأى compilation .
بالتالى بأعتمادك على النوع دة من الـ templating systems بتكسب السرعة و المرونة و الأداء العالى المطلوبين .
انا مش حتكلم عن اى اكواد لأن الموضوع مش محتاج و لأن Savant عامل مجموعة كبيرة من الأمثلة الى ممكن تحملها و الى موجودة فى الـ Documentation الخاصة بيه.
و للى مستعجل ممكن يشوف الأمثلة التعريفية هنا Quick Example
________
الموضوع مفتوح للمناقشة و ابداء الرأى لمن يحب و ارجوا ان متكونش المشاركة عبارة عن ( شكرا او مشكور)
و بالتوفيق
