Smarty Template Engine หรือเรียกสั้นๆว่า smarty เป็นชุด Class Library ที่สร้างขึ้น เพื่อมาจัดการส่วนการแสดงผล หรือ Presentation Layer หรือ Views ใน MVC ที่มีประสิทธิภาพยอดเยี่ยม และใช้งานง่าย
ทำไมต้อง Smarty ?
ถ้าเก่งภาษาอังกฤษ แนะนำให้อ่านโดยตรงที่นี่นะคับ http://smarty.php.net/whyuse.php
วัตถุประสงค์หลักสำหรับการออกแบบโปรแกรม Smarty ขึ้นมานั้น ก็ เพื่อต้องการแยกการทำงานในส่วนของ การแสดงผล (Presentation Layers) ออกจาก ส่วนของ การประมวลผล ข้อมูล(Business Logic Layers) อย่างชัดเจน ซึ่ง โดย ส่วนใหญ่ แล้ว โปรแกรมการประมวลผล และ การแสดงผลจะ ใช้ รูปแบบ ของ ภาษาที่ ต่างกัน ค่อน ข้างชัดเจ นอยู่แล้วโดย ที่การ แสดง ผล เราจะ ใช้ ภาษา HTML ส่วนการ ประมวลผล เราจะใช้ ภาษา PHP
<strong>Business Logic Layer -><font color=”#000080″>PHP</font>
Presentation Layer -> <font color=”#000080″>HTML</font></strong>
สำหรับ ส่วนการแสดงผล จะเป็นส่วนที่ แสดงข้อมูลต่างๆ ถึง ผู้ใช้งาน ระบบโดยตรง ซึ่งจะถูกสร้าง และ ดูแล ผ่าน ไฟล์ template ต่างๆ และส่วนใหญ่ ถูกสร้าง และปรับปรุงโดย ผู้ออกแบบ(Designer) หน้าตาของ เว็บไซต์ หรือ ระบบโดยตรง นอกจากนี้ฟังก์ชัน พื้นฐานทั่วๆ ไปของ เว็บไซต์ หรือ ระบบ ก็จะเป็นการ ดึงข้อมูล แล้วไปกำหนดค่าที่ไฟล์ Template แล้วทำการแสดงผลออกมา และข้อมูล โดยทั่วไปแล้ว จะเป็น หัวเรื่อง ข้อมูลรายละเอียด อื่นๆ เกี่ยวกับ ข่าว ต่างๆ เป็นต้นสำหรับการออกแบบระบบถ้ามีการ แยกส่วนของการแสดงผล ออกจาก ส่วน ของการประมวลผล ข้อมูล ที่จะนำมาแสดง ออกจากกัน อย่างชัดเจนแล้วโปรแกรมเมอร์ ที่ดูแลโปรแกรม ก็ไม่ต้องห่วงเรื่องการแสดงผล ในขั้นตอนการเขียนและแก้ไขโปรแกรม
และ ขณะเดียวกัน ดีไซน์เนอร์ ผู้ที่ดูแลส่วนของของการแสดงผล ก็ ไม่ต้องห่วงเรื่อง ข้อมูล หรือโปรแกรม เวลาจะปรับปรุงหรือ แก้ไข รูปแบบการแสดงผล และ โดยส่วนใหญ่ แล้ว การแก้ไข หรือ ปรับปรุงระบบส่วน มากจะเกี่ยวข้องกับการแสดงผล โดยส่วนใหญ่ เช่น การปรับปรุง tag html บางอย่าง การแก้ไข สไตล์ชีต (CSS) และส่วนใหญ่แล้ว ก็ จะใช้หรือทำผ่านโปรแกรมเฉพาะด้านต่าง อาทิ เช่น Dreamweaver เป็นต้น
สรุปหลักๆโดยรวม สำหรับข้อดี การใช้ Smarty
*) การปรังปรุง การประมวล ผลข้อมูลต่างๆ ทำได้ ค่อนข้าง อิสระ ไม่ต้องกังวล ในส่วนที่เกี่ยวข้องกับ การแสดงมากนัก
*) ลดผลกระทบกับ โปรแกรมที่เกิดจาก Designer , โดยที Designer ยังสามารถแก้ไข ปรับปรุง การแสดงผลได้ตามต้องการ
*) ระบบความปลอดภัยของ โปรแกรม มีมากขึ้น รวมทั้ง ง่ายต่อการ ดูแลรักษาด้วย
*) Smarty มีฟังก์ชัน ที่ช่วยจัดการเกี่ยวกับ ความปลอดภัย รวมถึง การเข้า ถึง ข้อมูลในส่วนต่างๆ เป็นอย่างดี เราจึง สามารถ กำหนด และบริหาร การเข้าถึง โปรแกรม สำหรับ Designer เพื่อป้อง กันปัญหาต่างๆ อัน อาจจะเกิดจาก การแก้ไข หรือปรับปรุงการแสดงผล ได้
อย่างไร ก็ตาม ถึงแม้จะมีการแยกส่วนของโปรแกรม (Application Code) ออกจาก ส่วนการแสดงผล (Presentation) เป็นสัดส่วนอย่างชัดเจน ก็ใช่ว่า การประมวลผลจะต้อง
แยกออกไปทั้งหมด Smarty เข้าใจว่า สำหรับการประมวลผล บางอย่าง ยังมีความจำเป็น และน่าจะต้องทำในส่วนการแสดงผล เช่น
1. กรณี ที่ สำหรับ ข้อมูลชุดเดียวกัน เวลาแสดงผลในตารางหนึ่ง สำหรับ บางแถว อาจจะต้องการแสดงผลด้วยสี อื่นๆ ต่างออกไป หรือ
2. กรณี สำหรับ ข้อมูลชุดเดียวกัน ข้อมูล บางอย่าง อาจจะต้องการ แสดงให้เป็น ตัวหนา หรือ มีสีที่ต่างออกไป
smarty จะทำให้เราแยกโปรแกรม php ออกจาก html แยกออกจากกันอย่างสิ้นเชิงเลยน้ะครับ แยก folder กันด้วย โดยที่ฝั่ง php ก็ทำงาน ไปเอาข้อมูล ไป query database ไป ได้ข้อมูลมา เช่น array ของข้อมูลลูกค้า ก็โยน (assign) ข้อมูลนี้ให้ smarty ส่วน smarty ก็เอาข้อมูลไปแสดง ไปเช็คว่าข้อมูลมีค่าไหม ถ้าไม่มีก็ขึ้นข้อความว่า “Not found” หรืออื่นๆ หรือถ้ามีก็แสดง list ออกมา มันจะทำให้เวลาที่เราต้องการแก้ไขหน้าตาของ web app แล้ว เราไม่ต้องไปยุ่งกับ code php ของเรา ก็แก้ที่ฝั่ง html แค่นั้นพอ ยังงี้แล้ว ทำให้เราเขียน 1 โปรแกรม แต่เอาไปรันได้ หลาย templates เลยทีเดียว หรือโปรแกรมแบบที่เขาแยก themes เลือก themes ได้ ใช้ smarty แล้วช่วยได้มากมายเลยครับในการนำ smarty มาใช้ เราสามารถ ดาวน์โหลด แล้วเอามาวางใน folder ใดๆ ใน app ของเรา แล้วก็ include หรือ require และเรียกใช้งานได้ทันที
ตัวอย่างขั้นตอนการใช้งาน (ใน Windows) เช่น:
1. ดาวน์โหลดไฟล์ smarty ลองดูตรง “Latest Stable Release” แล้วดาวน์โหลดมา ในที่นี้ผมดาวน์โหลด Smarty 2.6.18 Source March 7th, 2007
2. ทำการแตก zip ไฟล์ (.tar.gz ก็เป็น zip ไฟล์แบบหนึ่ง ไม่ต้องตกใจ สามารถใช้WinZip หรือ WinRar แตกได้สบายๆ) จะได้ folder ชื่อ Smarty-2.6.18 มา
3. copy Smarty-2.6.18 ทั้ง folder ไปวางไว้ใน folder library ของคุณ หรือถ้าไม่มี ก็วางไว้ที่เดียวกับที่ app อยู่ แล้วเปลี่ยนชื่อจาก Smarty-2.6.18 เป็น Smarty ก็พอ จะได้จำง่ายๆ จากนั้นก็ลองเขียน app ง่ายๆ ดูเลย
ตัวอย่างโปรแกรม PHPFile: helloSmarty.php
——————–
<?php
include “Smarty/libs/Smarty.class.php”;
// สร้าง Smarty instance
$smarty = new Smarty; // เซตที่อยู่ของ template
$smarty->template_dir = ‘templates’;
// เซตที่อยู่ของไฟล์ template ที่ compile แล้ว
$smarty->compile_dir = ‘templates_c’; // assign ค่าให้ pattern ‘message’ (หรือจะเรียกว่า “ตัวแปร ของ smarty” ก็คงไม่ผิดอะไร)
// เวลาเราอ้าง pattern นี้ใน template file จะอ้างเป็น $message
$smarty->assign(’message’, ‘Hello Smarty!’);
// สั่งแสดงผล โดยใช้ template file ที่ระบุ
$smarty->display(’helloSmarty.html’);
?>ตัวอย่าง Template FileFile: templates/helloSmarty.html
——————–
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<title>Test Smarty - phpzealots.com</title>
<meta name=”generator” content=”editplus” />
</head> <body>
<h1>{$message}</h1>
</body>
</html>เสร็จแล้วลองเรียกรัน helloSmarty.php ดูครับอันนี้เป็นการใช้งาน Smarty แบบเบื้องต้นจริงๆ น้ะครับ ถ้าใช้งานจริง คุณอาจจะเก็บ library ของ Smarty (ที่อยู่ใน libs ทั้งหมด) ออกมาไว้ที่ folder Smarty แล้วย้าย folder Smarty นี้ไปไว้ใน library ของคุณ และอ้าง include_path มาหา เวลาเอาไปใช้งานจะได้ไม่ต้อง include ชื่อ folder ยาวๆ
เว็บไซต์ : http://smarty.php.net/
Download : http://smarty.php.net/download.php
เอกสารการใช้งาน : http://smarty.php.net/docs.php
March 4th, 2008 at 10:49 pm
เจ๋งมาก อ่านแล้วนึกภาพออกเลย ว่าจะเอามาใช้ยังไง น่าสนใจมากๆ เหมาะมาก กรณีที่ผู้ใช้ชอบเปลี่ยนหน้าจอบ่อยๆ
*** อันนี้ บริษัทเอกชน เขาใช้กัน (เคยไปสัมภาษณ์งานมา) เขาถามว่า “รู้จัก smarty ไหม?”
เกาหัวเลยครับ มันคือไร? หว่า
March 7th, 2008 at 9:43 am
สนใจอยู่เหมือนกันคับ เอาไว้มาลองเล่นกันคับ