الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مناقشة : php ك templating system

مغلق
بدأه shreef في 30 يناير 2006 · 5 رد · 569 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

اغلب مبرمجى php حاليا يستخدمون templating systems لفصل كود الـ php ( اى الـ logic) عن وسوم الـ HTML ( اى الـ view )

الفصل بالشكل دة بيوفر سهولة فى ادارة الأكواد بحيث ان المصمم عارف الملفات الى حيشتغل عليها و لا يهتم باى حال من الأحوال بالملفات الى فيها اكواد الـ php الى بيستخدمها المبرمج.

بالتالى تجنبنا احتمالية ان المصمم ممكن يغير شئ داخل الـ logic مما يترتب عليه عطل فى عمل التطبيق بتاعنا و صعوبة اكتشاف الخطأ.

اصلا الموضوع مش لمناقشة كيفية استخدام الـ templating systems لكن دى كانت مقدمة تعريفية.

يتوافر عدد كبير من الـ template engines منها :

Smarty

templatepower

Avant

النوع دة من الـ 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

________

الموضوع مفتوح للمناقشة و ابداء الرأى لمن يحب و ارجوا ان متكونش المشاركة عبارة عن ( شكرا او مشكور)

و بالتوفيق

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#2

السلام عليكم a_shref

انا قرأت الموضوع بعنايه ولكن صراحة في بعض النقاط التي تسبب بعض التعتيم في الفهم عندي اكيد ده من ضعف الفهم الموجود عندي :D

هل ال templating systems موجه للمصممي الويب اي شكل الصفحة وليس للبرمج اي ليسهل عمل مصمم الصفحه علي التغير في شكلها دون المساس بالكود البرمجي

ويتم فعل هذا عن طريق تحويل الاكود المصنوع بالhtml الي اكود php ........ هل ما اقول صحيح

ثانيا هل برنامج Savant بيخلي الواحد يبرمج compiler الخاص بيه اي يجعل compiler يقوم بما يريده ان يفعل اي يعرفه الطريق او المسار المفروض ان يعمل بيه وبالتالي فأن المبرمج سوف يقوم بعمل قواعد جديده للغة حسب ما يريد هو ........ هل ما اقول صحيح

ولكن راي بشكل الذي فهمته

اري ان templating systems تقوم بتشتيت المبرمجين فيصعب ان يفهم البرنامج غير صانعه بنتظار ردك اخي الكريم

يابن ادم ولدتك امك باكياً والناس حولك سروراً فعمل لي يوم اذا بكوا في يوم موتك ضاحكاً مسروراً

اطلب اي ملف Testking او كتاب من كتب ميكروسوفت في اي مجال

#3

اهلا محمد :)

اقتباس
هل ال templating systems موجه للمصممي الويب اي شكل الصفحة وليس للبرمج اي ليسهل عمل مصمم الصفحه علي التغير في شكلها دون المساس بالكود البرمجي

ويتم فعل هذا عن طريق تحويل الاكود المصنوع بالhtml الي اكود php ........ هل ما اقول صحيح

لا هى فكرة الـ Templating Systems ان الـ Web Applications (تطبيقات الويب) بيكون شغال عليها راجل مبرمج و زميل مصمم.

و فى جزء php فاهمه المبرمج و بيتداخل معاه HTML الى شغال عليها المصمم, فبنحتاج طريقة نفصل بيها دة عن دة عشان محدش يبوظ شغل التانى عن التعديل على حاجة مثلا.

مثلا لو استعنا بـ templatepower حيكون عندنا ملفين :

ملف test.php

<?php
include_once( "class.TemplatePower.inc.php" );

$tpl = new TemplatePower( "simple.tpl" );
$tpl->prepare();

$tpl->assign( "name", "Ron" );

$tpl->printToScreen();
?>

و ملف تانى simple.tpl

<html>
<head>
  <title>Simple Template Example</title>
</head>
<body>
  <H2>Welcome {name}!</H2>
</body>
</html>

اول ملف هو المكان الى فيه كل اكواد الـ php (الى شغال عليها المبرمج)

و تانى الملف هو الملف الى بيشتغل عليه المصمم

كدة عملنا فصل بين شغل كل واحد و عدمنا احتمال ان المصمم يحذف جزء من اكواد الـ php مثلا بالغلط

اقتباس
ثانيا هل برنامج Savant بيخلي الواحد يبرمج compiler الخاص بيه اي يجعل compiler يقوم بما يريده ان يفعل اي يعرفه الطريق او المسار المفروض ان يعمل بيه وبالتالي فأن المبرمج سوف يقوم بعمل قواعد جديده للغة حسب ما يريد هو ........ هل ما اقول صحيح

لو لاحظت المثال فوق حتلاقى ان احنا فى ملف الـ php استخدمنا

$tpl->assign( "name", "Ron" );

و فى ملف simple.tpl كتبنا {name}

بالتالى لو جربت الكود حتلاقى ان {name} مش موجودة و ظهر مكانها القيمة Ron

دلوقتى الى حصل هو ان الـ template engine بيعمل كـ compiler بحيث بيبدل الـ place holder وهو فى حالتنا {name} , بالقيمة المقابلة ليه

و كذلك الحال لو بتعمل اى حاجة تانية.

طيب لو قارنتها بحاجة زى

<?= $name ?>

هل الفرق كبير ؟!

الفرق فى سرعة التنفيذ و توفير موارد السيرفر

اقتباس
ولكن راي بشكل الذي فهمته

اري ان templating systems تقوم بتشتيت المبرمجين فيصعب ان يفهم البرنامج غير صانعه

لا هو المشكلة مش كدة بل كل الموضوع بيدور حول ان اى الأسلوبين احسن فى الأداء

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#4

مشكور اخي علي الرد السريع

الان وكما نقول في مصر "نورت المحكمة" اي وضحت الفكرة واتضحت

اعتقد ان اسلوب templating systems جيد جداً في الشركات البرمجيه اي عندما يكون هناك فريق يعمل علي موضوع واحد وهناك واحد للبرمجه واخر للتصميم فيكون هذا جيد لهم حتي لا يحدث اي لغبطه وتداخل في المهم

ولكن وعن نفسي اعتقد ان مبرمج الويب يجب وعلي الاقل ان يكون مصمم فوق المتوسط للويب مش مهم يكون بيعرف في الجرفك ولكن يستطيع ان ينسق الصفحة

وانا استخدم اكواد html في الكود البرمجي فأحياناً احتاج الي شكل نهائي معين او مخرجات معينه في شكل معين وخاصة وانا اصنع برنامج بقواعد البيانات

فالاسلوب العادي هو الافضل بالنسبة لي فهو ليس معقد ولكن اعتقد انه يجب الاطلاع علي اسلوب templating systems حتي يكون المبرمج علي علم بكل جديد

يابن ادم ولدتك امك باكياً والناس حولك سروراً فعمل لي يوم اذا بكوا في يوم موتك ضاحكاً مسروراً

اطلب اي ملف Testking او كتاب من كتب ميكروسوفت في اي مجال

#5

لا يا وحش ;)

الموضوع بتاع الـ templating systems مهم و اكيد المبرمج عارف html و CSS و كل الحاجات التانية , بس تخيل نفسك مطلوب منك تعمل موقع يشتغل بنفس الشكل و المظهر على IE و Opera و FFox و Safari .... او تعمل كذة او كذة بس انت متعرفش بيتعمل ازاى.

فهنا انت محتاج جهود المتخصص و فى الحالة دى هو الـ web designer

و عدم معرفتك انت كمبرمج بالحجات دى مش عيب لأنه خارج تخصصك.

و التخصص فى حد زاته مهم.

Web Citizen

ShrefInLife.gif

__________

General blog : Shref In Life

#6

وصلت الفكرة يا زعيم وبكده يجب علي مبرمجي الphp الاهتمام بدراسة اساليب templating systems وكيفية عملها حتي تتسع دائرة الطلب عليه وبالله التوفيق

يابن ادم ولدتك امك باكياً والناس حولك سروراً فعمل لي يوم اذا بكوا في يوم موتك ضاحكاً مسروراً

اطلب اي ملف Testking او كتاب من كتب ميكروسوفت في اي مجال

هذا الموضوع مغلق.

مواضيع مشابهة