فيما يتعلق بقوالب PHP، فالقول أسهل من الفعل. من المحتمل أن يكون هناك أكثر من 20 خيارًا عشوائيًا، والكمثرى وحدها تحتوي على 5 قوالب مختلفة، وهو ما يمثل صداعًا حقًا.
لا تتبع آراء الآخرين وتقول إن هذا جيد وهذا سيء قبل اختيار القالب، من الأفضل أن تفهم أولاً ما هو الغرض الحقيقي من القالب؟ ببساطة، الغرض الأساسي من القالب هو العمل الجماعي. هناك طريقتان رئيسيتان للعمل:
1. فصل HTML وPHP يجعل التعاون بين مصممي الويب ومبرمجي PHP أكثر متعة.
2. إن فصل منطق العرض ومنطق المعاملات يجعل تغيير منطق المعاملات الأساسي وتوسيع التطبيقات أسهل وأكثر مرونة، مما يعني أنه يجعل التعاون بين المبرمجين أكثر متعة. (غالبًا ما يتم التغاضي عن هذه النقطة أو إساءة فهمها من قبل الأشخاص. فهم دائمًا يعتقدون أن إخراج PHP من HTML يسمى فصل منطق العرض ومنطق المعاملات. إذا كان الأمر كذلك، فلماذا تهتم بخلط PHP و HTML في المقام الأول؟)
اكتشف الغرض الحقيقي من هذا القالب هو أنه سيكون من الأسهل اتخاذ القرار الصحيح.
إذا كنت مبرمج PHP الوحيد ولكنك بحاجة إلى العمل مع مصممي الويب الآخرين، فاختر قالبًا يمكنه فصل HTML عن PHP، phplib (يبدو الآن أنه مدمج في Pear http://pear.php.net /package/HTML_Template_PHPLIB) ) أو
FastTemplate هو شيء من هذا القبيل، بسيط جدًا وسهل الاستخدام.
إذا كانت واجهة موقع الويب الخاص بك قبيحة ويتم إكمالها بشكل أساسي بواسطة المبرمجين، ولكن الوظائف أكثر تعقيدًا وتتطلب وظائف امتداد قوية، وتحتاج إلى فصل المستويات المختلفة بما في ذلك منطق العرض، فلا تستخدم أي شيء خاص، PHP نفسها هي أفضل قالب . تجدر الإشارة إلى أنه في هذه الحالة، يتعين عليك تصميم برنامجك بعناية فائقة، وتذكر دائمًا الفصل ليس بين PHP وhtml، بل بين منطق الأعمال ومنطق العرض التقديمي. لهذا السبب كنت دائمًا مقاومًا جدًا لأشياء مثل Smarty، لأن بناء جملة Smarty معقد جدًا وقوي، ويكاد يعيد اختراع لغة البرمجة النصية (حتى مبرمجي PHP عليهم إعادة تعلمها). والأمر الأكثر إثارة للحيرة هو أنه كلما كان هذا البرنامج النصي أقوى، كان من الأسهل على الأشخاص الخلط بين منطق العمل ومنطق العرض التقديمي، مما يؤدي إلى تدمير الهدف الأصلي للقالب.
إذا كنت تريد فصل HTML وPHP والحصول على تصميم مرئي أفضل، ولكنك تريد أيضًا أن يتمتع النظام بأكمله بقدرات توسعة قوية للغاية يمكنها التكيف مع واجهات مختلفة مثل html وxml وwml دون الحاجة إلى تعلم تركيب جملة معقد مع توفير مستوى أعلى مستوى الكفاءة التشغيلية، فإن هذه مسألة صعبة للغاية. الخبر السيئ هو أنه لا يوجد حاليًا قالب ناضج يمكنه تلبية هذه المتطلبات حقًا، والخبر السار هو أنه ليس من الصعب إكمال مثل هذا القالب، إذا جربت Zope أو ColdFusion، فستجد ظل هذا القالب.
(wact http://wact.sourceforge.net/ وphptal http://phptal.sourceforge.net/ يتطوران في هذا الاتجاه ويجب أن يكونا واعدين جدًا).
هناك طريقتان رئيسيتان للجمع بين القوالب والبيانات (استدعاء القالب): طريقة الدفع وطريقة السحب.
طريقة الدفع هي استخدام PHP لدفع البيانات إلى القالب، مما يعني أن المبرمج يحتاج إلى تعيين قيمة بشكل صريح لكل متغير في القالب وربطها.
تشبه طريقة السحب خلط php وhtml، حيث تقوم المتغيرات الموجودة في القالب بسحب البيانات بشكل نشط.
عند الحديث عن القوالب، علينا أن نذكر شيئين آخرين:
phphtmllib وquickform ( http://pear.php.net/package/HTML_QuickForm يستخدم هذان الشيئان الطرق التقليدية لإكمال HTML من خلال مكونات الصفحة المختلفة الصفحة بالكامل في أيدي المبرمج وربما يفضل العديد من المبرمجين الذين كتبوا برامج سطح المكتب التقليدية ذات واجهة المستخدم الرسومية هذه الطريقة.
حل أجمل
إذا كنت تصنع برامج تجارية، فيجب أن يكون Flash حلاً أجمل (لا تفهموني خطأ، لا تعتقدوا أنه لمجرد معرفتكم أن PHP تدعم مكتبات ming وswf يمكنها إنشاء Flash ديناميكيًا، وهذا ليس ما أنا أتحدث عنه.) ما أريد قوله هو الحل الذي يدعم Flash Remoteing وهذا النوع من الأشياء هو مزيج ذو معنى حقيقي من PHP وFlash. يكمل المصمم المرئي جزء الفلاش، ويقوم مبرمج PHP بإرسال البيانات المصنوعة من الفلاش إلى العميل من خلال التحكم عن بعد بالفلاش.
يوجد حاليًا حلان:
AMFPHP
نظرًا لأن Macromedia Flash Remoting يستخدم تنسيق بيانات فريدًا وأكثر كفاءة عند إرسال البيانات، يقوم AMFPHP بإنشاء تنسيق البيانات المقابل على جانب الخادم من خلال تحليل تنسيق البيانات PHP فئة لتلقي هذه البيانات وتحليلها وترميزها لتحقيق وظيفة تبادل المعلومات (تمامًا مثل Samba، يجب أن يكون نوعًا من القرصنة).
PHPObject
http://ghostwire.com/resources/phpobject/
يستخدم PHPObject طريقة أخرى لنقل البيانات من خلال صابون التنسيق المفتوح عن طريق تضمين بعض مكونات actionscript في الفلاش.
في الواقع، هناك العديد من المشكلات الأخرى المتعلقة بقوالب PHP، ولا يمكنني كتابة الكثير إلا لفترة من الوقت.