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

تمهيد لفكرة جديدة في PHP

مغلق
بدأه al3omdah.com في 9 مايو 2005 · 10 رد · 932 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم وبه نستعين

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

أود أن اطرح عليكم الفكرة التي سعيت جاهدأ والحمدلله رب العالمين أن اأجد الطريقة المناسبة لأفصل شفرة PHP عن تصميم الصفحة وذللك بإستخدام أحدث التقنيات والتي يستخدمها الغرب الآن وقد وغيرت مجرى المبرمجون وحققت الهدف من خلال فصل المبرمجون عن المصممون وذللك عندما تود عمل مشروع خاص بك وانت مبرمج وصديقك مثلا مصمم فقط يمكنكم تقسيم العمل بينكم دون الحاجة لتعلم المصمم كيفية البرمجه بلغة الـ PHP وذلك بإستخدام XML Family وقد نجحت هذه الفكرة معي والحمدلله واستطعت ان أحقق ما أريد لإنشاء صفحات الويب فعالة وكذللك قابلة للتعديل أي المصمم قادر على تغيير التصميم لجميع الصفحات دون تغير سطر واحد من شيفره PHP !! واليكم الفكرة الجديدة

استخدام لغة XSLT وهذه اللغة سهلة للغاية وتكون مع Html وهذه التي يقوم المصمم بإستخدامها للتصميم (القالب)

استخدام PHP لحركة الصفحة والتي يقوم بها المبرمج

ماهي المتطلبات لإستخدام هذه التقنية ؟

توجد مكتبتان تتعامل مع XSLT في الـ PHP وهما

1 - مكتبة Sablot library

2 - مكتبة libxslt library

وبما اني اليوم مريض جدا وأود أن الجميع يستفيد سوف أقوم بشرح مثال كامل مع الملفات وكيفية تركيب المكتبات وتشغيلها في PHP ليوضح لكم كيفية عمل هذه الفكرة بنجاح ان شاء الله تعالى واعتذر عن الإطالة

#2

لم أحاول فصل الكود لأننى أقوم بالتصميم والتكويد معا :)

ولكنها ميزه تضع البيشو بقدم المساواه مع asp.net التى بها فصل كامل للكود ..

جزاك الله خيرا :)

#3

ممتاز لو تريد عمل مجموعة من المبرمجين والمصممين وأغلب المصممين الذين لديهم ذوق في التصميم أكثرهم ليس لهم اهتمام في البرمجة وتخيل هذا المثال اذا كان لديك صفحة ويوجد فيها عنوان الصفحة في المنتصف وتريد ان تجعل العنوان بالجانب الأيمن من الصفحة طبعا الإجابة بالنسبة للطريقة التقليدية سوف تقوم بتعديل الكود للصفحة وطبعا هذا يحتاج الي المبرمج الذي وضع الكود الخاص لذللك , التصميم والكود معا لكن بالطريقة الجديدة سوف يقوم فقط المصمم بتعديل المكان دون الحاجة الى تعديل الكود تخيل ذلك جيدا :D

#4

والله شئ جميل جداً .. أتمنى أن تقوم بالسلامة أخي العزيز . وتقوم ولو بشرح مثال بسيط . عن هذه ..

مع خالص تحياتي

#5

واليكم اخواني هذا المثال البسيط دون استخدام كود PHP وهذا المثال عبارة عن اسماء الموظفين في لأحدى الشركات ويحتوي على ملفين الأول هو ملف اسمه :

Employees.xml ويحتوي على بيانات الموظفين :D وهذا محتوى الملف

<?xml version="1.0" encoding="windows-1256"?>
<?xml-stylesheet type="text/xsl" href="Employees.xsl"?>
<employees>
   <employee>
       <title>محلل بيانات</title>
       <name>عماد</name>
       <nationality>كويتي</nationality>
       <department>رعاية العملاء</department>
   </employee>
   <employee>
       <title>مدير</title>
       <name>محمد</name>
       <nationality>كويتي</nationality>
       <department>التسويق</department>
   </employee>
   <employee>
       <title>مدير شبكات</title>
       <name>يوسف</name>
       <nationality>كويتي</nationality>
       <department>الشبكات</department>
   </employee>
</employees>

أما الملف التالي فهو Employees.xsl وهو يحتوى على شكل البيانات أي كيفية ظهورها في الصفحة ويحتوي الملف على الكود التالي :D

<?xml version="1.0" encoding="windows-1256"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
<title>Staff</title>
</head>
<body>
<table width="750" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
   <th width="180" scope="col">الإدارة</th>
      <th width="180" scope="col">الجنسية</th>
      <th width="180" scope="col">الإسم</th>
      <th width="182" scope="col">المسمى الوظيفي</th>
  </tr>
  <xsl:for-each select="employees/employee">
  <tr>
    <th scope="col"><xsl:value-of select="department"/></th>
    <th scope="col"><xsl:value-of select="nationality"/></th>
    <th scope="col"><xsl:value-of select="name"/></th>
    <th scope="col"><xsl:value-of select="title"/></th>
  </tr>
  </xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

الآن عليك بإنشاء ملفين بنفس الأسماء التي ذكرتها ونسخ محتوى كل ملف من هنا وبعد ذللك ضع الملفين في مكان واحد اي نفس PATH وقم بإستعراض الملف Employees.xml في المستعرض الذي لديك Internet Explorer وانظر الى النتائج وفكر قليلا !! لو اردت ان تغير شكل الجدول أي ملف سيتم تعديله :o أكيد الملف Employees.xsl ثانيا عندما نبرمج في PHP سنقوم بإنشاء ملف عن طريق الـPHP لينشء لنا ملف يحتوي على البيانات فقط وهو اسماء الموظفين كما هو موجود في ملف Employee.xml

النتيجة النهائية : أن الملفات التي امتدادها XSL مثل ملف الموظفين Employees.xsl هو الملف الذي سيقوم المصمم للصفحة بإنشائة ويمكنه تغيير مايريد فقط من هذا الملف وهنا يكون تخصص المصمم فقط في هذا الملف (h)

أما المبرمج فيكون تخصصه فقط لإنشاء ملفات XML مثل ملف الموظفين Employees.xml عن طريق PHP وذلك وفق شروط معينه .

ملاحظة مهمة جدا

في المثال السابق استخدمت الفكرة دون ادخال اي كود من لغه الـ PHP ولكم في الأمثلة القادمة سوف يتم بإذن الله عمل مثال كامل مع كود كامل بالـPHP إن شاء الله أنا ما اريده منكم في هذا المثال هو فقط فهم الفكرة التي اود ان افيدكم بها لأنها الآن من خلال دراستي لهذا الموضوع وجدت انها من أحدث وأفضل الطرق التي وصلوا اليها الغرب في علم برمجه Web Applications اي تطبيقات الويب واتمنى من الله عزوجل ان يوفقني واياكم في ذلك والله أعلم

#6

السلام عليكم و رحمة الله

شفاك الله و عافاك أخي العمدة و بداية جميلة و موفقة .

أحببت أن أدلي بدلوي في موضوع فصل الكود عن التصميم حيث انتشرت القوالب (templates) لتوفر هذا الأمر ، لكن هذه القوالب زادت في التعقيد حتى أصبح لها شفرة خاصة لإستخدامها ، لكنها كانت تحقق المطلوب منها من فصل الكود عن التصميم ، و قد كنت دائماً ما أتساءل : لماذا لا نستخدم الأمر include لهذا الشأن ؟ نضع الكود في صفحات مستقلة و نستدعيها داخل الصفحة المصممة كقالب (و كل ما على المصمم هو تسمية الصفحة بإمتداد php ) ، حتى أني رأيت أن أمر include يقربنا و لو من بعيد بمفهوم البرمجة الكائنية التوجه ، كللت هذه التساؤلات بالإجابة بعد أن رأيت هذه المقالة المرفقة من موقع zend و التي تتحدث عن php نفسها كمحرك قوالب templates engine و قد أرفقتها لكم لكي تعم الفائدة ، وننتظر مشاركة خبرائنا لتقييم الفكرتين و النظر في أفضلية إحداهما على الأخرى.

PHP as template system.zip

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#7

فكرة رائعة ،

صراحة حمستوني لتعلم المزيد عن xml ، سأحاول تعلمها فيبدوا أنها مفيدة

على فكرة الكود لم يعمل لدي يا al3omdah.com ، يعرض ملف xsl كما يعرض ملف xml ؟

#8

هذا هو المثال تستطيع تحميلة وتجربته :D

Employees.zip

#9
محمد سمير كتب:
السلام عليكم و رحمة الله

شفاك الله و عافاك أخي العمدة و بداية جميلة و موفقة .

أحببت أن أدلي بدلوي في موضوع فصل الكود عن التصميم حيث انتشرت القوالب (templates) لتوفر هذا الأمر ، لكن هذه القوالب زادت في التعقيد حتى أصبح لها شفرة خاصة لإستخدامها ، لكنها كانت تحقق المطلوب منها من فصل الكود عن التصميم ، و قد كنت دائماً ما أتساءل : لماذا لا نستخدم الأمر include لهذا الشأن ؟ نضع الكود في صفحات مستقلة و نستدعيها داخل الصفحة المصممة كقالب (و كل ما على المصمم هو تسمية الصفحة بإمتداد php ) ، حتى أني رأيت أن أمر include  يقربنا و لو من بعيد بمفهوم البرمجة الكائنية التوجه ، كللت هذه التساؤلات بالإجابة بعد أن رأيت هذه المقالة المرفقة من موقع zend و التي تتحدث عن php نفسها كمحرك قوالب templates engine و قد أرفقتها لكم لكي تعم الفائدة ، وننتظر مشاركة خبرائنا لتقييم الفكرتين و النظر في أفضلية إحداهما على الأخرى.

أخي العزيز استخدام القوالب المكتوبة بلغة PHP قد تختلف بالإستخدام من نظام الى آخر كذلك يوجد منها السريع ويوجد منها البيطئ وانا بحثت كثيرا عن هذا الموضوع ولكن وجدت XSLT هي الحل الأنسب لي واتمنى ان يكون لك أيضا وللجميع فأنت تتعلم شي موحد وموثوق وتابع الي عائلة XML واتمنى الفائدة للجميع وجزاكم الله خيرأ :)

#10

تمام ، عرفت الخطأ ،

كنت افتح ملف xsl ، والمفروض أفتح ملف xml ==> جديد على الإكسمل

#11

ممتاز والله سبحانه ولي التوفيق

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

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