เกี่ยวกับเทมเพลต 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 สมบูรณ์ผ่านโครงสร้างของหน้าต่างๆ เพจนี้อยู่ในมือของโปรแกรมเมอร์โดยสมบูรณ์ บางทีโปรแกรมเมอร์หลายคนที่เขียนโปรแกรมเดสก์ท็อป GUI แบบดั้งเดิมอาจชอบวิธีนี้
โซลูชันที่สวยงามยิ่งขึ้น
หากคุณกำลังสร้างซอฟต์แวร์เชิงพาณิชย์ Flash ควรเป็นโซลูชันที่สวยงามกว่า (อย่าเข้าใจฉันผิด อย่าคิดว่าเพียงเพราะคุณรู้ว่า PHP รองรับไลบรารี ming และ swf สามารถสร้าง Flash แบบไดนามิกได้ นั่นไม่ใช่สิ่งที่ ฉันกำลังพูดถึง) สิ่งที่ฉันต้องการจะพูด มันเป็นโซลูชันที่รองรับ Flash Remoting สิ่งนี้คือการผสมผสานระหว่าง PHP และ Flash ที่มีความหมายอย่างแท้จริง ผู้ออกแบบภาพสร้างส่วนแฟลชให้เสร็จสมบูรณ์ และโปรแกรมเมอร์ PHP จะส่งข้อมูลไปยังไคลเอนต์ที่ทำจากแฟลชผ่านแฟลชรีโมต
ขณะนี้มีสองวิธีแก้ไข:
AMFPHP
เนื่องจาก Macromedia Flash Remoting ใช้รูปแบบข้อมูลที่เป็นเอกลักษณ์และมีประสิทธิภาพมากกว่าเมื่อส่งข้อมูล AMFPHP จะสร้างรูปแบบข้อมูลที่สอดคล้องกันบนฝั่งเซิร์ฟเวอร์โดยการวิเคราะห์รูปแบบข้อมูล PHP คลาสเพื่อรับ แยกวิเคราะห์ และเข้ารหัสข้อมูลเหล่านี้เพื่อให้บรรลุหน้าที่ในการแลกเปลี่ยนข้อมูล (เช่นเดียวกับแซมบ้า มันควรจะเป็นการแฮ็กประเภทหนึ่ง)
PHPObject
http://ghostwire.com/resources/phpobject/
PHPObject ใช้วิธีการอื่นในการส่งข้อมูลผ่านสบู่รูปแบบเปิดโดยการฝังส่วนประกอบ actionscript บางส่วนในแฟลช
จริงๆ แล้ว ยังมีปัญหาอื่นๆ อีกมากมายที่เกี่ยวข้องกับเทมเพลต PHP และฉันสามารถเขียนได้มากเพียงชั่วระยะเวลาหนึ่งเท่านั้น