COMDSS.com

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color

Webmaster Talks!

Welcome to new design website COMDSS.com, All in one ultimate stuff for you such as new Gadgets, Technology, Reviews, Web design, Downloads, Lifestyle, Health, etc... *This web work with Chrome, Safari and Firefox

You decide : We support.

Ayutthaya

Home CMS Smarty : Template Engine

Smarty : Template Engine

E-mail Print PDF

 Smarty : Template Engine สำหรับ PHP
Smarty : Template Engine

       หลังจากห่างหายไปเสียนาน เนื่องจากติดภาระกิจทางครอบครัว อย่างที่คุณเชได้แปะประกาศไว้ พอเสร็จภาระกิจดังกล่าวแล้วจะชักช้าอยู่ใย ก็ต้องมาอัพเดดเวบไซท์สุดรักสักเล็กน้อย เพราะกลัวเหล่าบรรดาคนดูจะหนีหายไปเสียหมด แล้วกำลังใจในการเขียนก็จะลดลงตามไปด้วย สุดท้ายเวบ BioLawCom.De อาจกลายสภาพเป็นเวบร้างรกอินเตอร์เนตได้ (ว่าไปนั่น)

เรื่องแรกที่ผมภูมิใจนำเสนอหลังจากห่างหายไปเสียนาน เป็นเรื่องเกี่ยวกับเครื่องมือในการเขียนโปรแกรมตัวหนึ่งที่น่าสนใจไม่น้อยเลยทีเดียว นั้นคือ Smarty ซึ่งเป็นTemplate Engine ที่ใช้กับภาษาเขียนโปรแกรมยอดนิยมอย่าง PHP หากใครอยากรู้ว่า Template Engine คืออะไร ใช้งานอย่างไร มีข้อดีอย่างไร เชิญติดตามออ่านได้เลยครับ ....

       ปัญหาที่ใหญ่อย่างหนึ่งที่เจอในการเขียนโปรแกรมเกือบทุกภาษาคือ การแยกส่วนต่าง ๆ ออกจากกัน เพื่อให้นักเขียนโปรแกรมที่มีความรู้ความสามารถในด้านที่แตกต่างกัน สามารถทำงานร่วมกันได้อย่างมีประสิทธิภาพ หลักการที่นิยมใช้ในการแยกส่วนต่าง ๆ ของโปรแกรมออกจากกันหลัการหนึ่งคือ MVC หรือModell View Control โดยจะแยกส่วนต่าง ๆ ของโปรแกรมออกเป็นสามส่วนใหญ่ ๆ คือ

1 Modell คือ ส่วนของการจัดเก็บข้อมูล โดยเฉพาะอย่างยิ่งข้อมูลในฐานข้อมูล ส่วนมากแล้ว นักเขียนโปรแกรมที่รับผิดชอบในส่วนนี้ มีหน้าที่ออกแบบตารางในฐานข้อมูล และความสัมพันธ์ระหว่างตาราง

2 View คือ ส่วนของการติดต่อกับผู้ใช้ ซึ่งก็หมายถึง User Interface นั่นเอง

3 Control คือ ส่วนควบคุมการทำงานของโปรแกรม อาจมองเป็นส่วนเชื่อมระหว่าง Modell และ View ก็ได้ แต่จริง ๆ แล้ว Control มีหหน้าที่ควบคุมการทำงานของโปรแกรมทั้งหมด

ในภาษาเขียนโปรแกรม PHP (ที่เป็นค่าปริยาย) แทบไม่มีเครื่องมือใด ๆ ที่เอื้อต่อการเขียนโปรแกรมแบบ MVC เนื่องเพราะ โดยพื้นฐานแล้ว PHP เป็นภาษาเขียนโปรแกรมที่ถูกออกแบบให้เป็นเครื่องมือสำหรับการเขียนเวบไซท์ส่วนตัว แต่เมื่อ PHP ได้รับความนิยมมากขึ้นเรื่อย และถูกนำไปใช้ในโครงการขนาดใหญ่มากขึ้น จึงมีความจำเป็นอย่างยิ่งในการนำเครื่องมืออื่น ๆ มาใช้ในการเขียนโปรแกรม เพื่อให้เหมาะสมกับงานขนาดใหญ่

Template Engine เป็นเครื่องมือชิ้นหนึ่งที่ช่วยแยกส่วน View และ Control ออกจากกันได้ โดยส่วนของ Control ก็คือส่วนของโปรแกรมที่เขียนขึ้นด้วย PHP ซึ่งไม่จำเป็นต้องมีส่วนของการแสดงผลใด ๆ เลยอยู่ในตัวโปรแกรม (โดยปกติแล้วโปรแกรมที่เขียนด้วย PHP จะมีส่วนของการแสดงผลซึ่งก็คือ HTML รวมอยู่กับส่วนอื่น ๆ ของโปรแกรมอยู่ในไฟล์หนึ่งไฟล์) สำหรับส่วนของการแสดงผลนั้นจะถูกเก็บไว้ในอีกไฟล์หนึ่งซึ่งเรียกว่า Template หน้าที่ของ Template Engine คือรวมสองส่วนเข้าด้วยกัน ในขณะที่โปรแกรมถูกเรียกใช้

ประโยชน์ที่ได้รับในการใช้ Template Engine คือ คนเขียนโปรแกรมและคนออกแบบหน้าตาเวบไซท์สามารถทำงานแยกส่วนกันได้ อีกทั้งการปรับปรุงหน้าตาเวบไซท์ก็สามารถทำได้ง่ายขึ้น เพราะไม่ต้องเข้าไปยุ่งเกี่ยวกับส่วนอื่น ๆ ของโปรแกรม

เทคโนโลยีอื่นที่มีคุณสมบัติคล้ายกับ Template Engine คือ XSLT ที่ใช้กับเอกสาร XML โดย XSLT มีข้อได้เปรียบในเรื่องมาตรฐานที่เป็นกลางกว่า Template Engine แต่การใช้งานยุ่งยากว่า Template Engine เนื่องจากต้องมีการออกแบบเอกสาร XML ก่อน จึงสามารถใช้งาน XSLT ได้ ซึ่งการออกแบบเวบไซท์นั้นไม่จำเป็นต้องมีการออกแบบเอกสาร XML แต่อย่างใด ข้อได้เปรียบอีกอย่างของ Template Engine คือ เรื่องของความเร็ว โดยเฉพาะอย่างยิ่งเอกสารที่มีความซับซ้อนสูง XSLT จะทำงานได้ช้ากว่า Template Engine มาก

Smarty เป็น Template Engine ที่ได้รับการสนับสนุนจาก PHP โดยตรง มีการติดตั้งที่ง่าย เพียงแค่คัดลอกไฟล์ที่จำเป็นลงบนเวบเซิร์พเวอร์ก็สามารถใช้งานได้ทันที (ขั้นตอนการติดตั้งอย่างละเอียดอ่านได้ที่ Smarty Quick Install) ใช้ได้ทั้งกับ PHP 4 และ PHP 5 ใช้งานง่าย และเป็นต่อในเรื่องความเร็ว

ในบลอคของผมบลอคนี้คงไม่กล่าวถึงการใช้งาน Smarty อย่างละเอียด (เอกสารอย่างละเอียดสามารถอ่านได้ที่ Smarty Documentation) แต่ขอยกตัวอย่างการใช้งานเล็ก ๆ น้อย ๆ เพื่อให้ผู้อ่านเห็นภาพการใช้งานที่จัดเจนขึ้น และสามารถเริ่มต้นใช้งาน Smarty ได้ง่ายขึ้น

โค้ด PHP ต่อไปนี้เป็นโค้ดที่ใช้แสดงชื่อ และเบอร์โทรศัพท์ที่สมมติขึ้น โดยให้อยู่ในรูปแบบตาราง และใช้โครงสร้างของ PHP โดยปกติ
 

 

<?php
	$tel = Array("MrBlue" => "08001234567",
		"MrPink" => "08007654321",
		"Mrblue" => "08007777777",
		"MrWhite" => "08006655444"
	);
	echo("<table>");
	echo("<tr>");
	echo("<th>Name</th>");
	echo("<th>Tel.</th>");
	echo("</tr>");
	foreach($tel as $key=>$value){
		echo("<tr>");
		echo("<td>$key</td>");
		echo("<td>$value</td>");
		echo("</tr>");
	}
	echo("</table>");
?>
plain code

 เมื่อเรียก Script ดังกล่าวมาใช้งานก็จะได้ผลดังนี้

<table>
	<tr>
		<th>Name</th>
		<th>Tel.</th>
	</tr>
	<tr>
		<td>MrBlue</td>
		<td>08001234567</td>
	</tr>
	<tr>
		<td>MrPink</td>
		<td>08007654321</td>
	</tr>
	<tr>
		<td>Mrblue</td>
		<td>08007777777</td>
	</tr>
	<tr>
		<td>MrWhite</td>
		<td>08006655444</td>
	</tr>
</table>
plain code

 สำหรับการใช้งาน Smarty ในขั้นแรกอาจดูยุ่งยากกว่าเล็กน้อย เพราะต้องมีการปรับแต่งค่าต่าง ๆ และต้องเรียนรู้โครงสร้างของ Smarty เพิ่มเติม

<?php
$tel = Array("MrBlue" => "08001234567",
	"MrPink" => "08007654321",
	"Mrblue" => "08007777777",
	"MrWhite" => "08006655444"
);
require '../libs/Smarty.class.php';// เพิ่ม Class ของ Smarty ลงในสคริป
$smarty = new Smarty; // กำหนด Constructuer ของ Smarty
$smarty->assign("template_tel",$tel);// ส่งค่าตัวแปร $tel ไปยัง Template
$smarty->display('test.tpl');//กำหนดไฟล์ที่ใช้เป็น Template
?>
plain code

 สำหรับข้อได้เปรียบแรกที่เห็นได้ชัดในการใช้งาน Smarty คือ ในตัวโปรแกรมไม่มี HTML-Tag อยู่เลยแม้แต่น้อย ส่วนของ HTML จะถูกกำหนดใน Template-File ซึ่งในที่นี้ก็คือ test.tpl

<table>
<tr>
    <th>Name</th>
    <th>Tel.</th>
</tr>
{foreach key=tel_key item=value from=$template_tel} {*เปรียบได้กับ foreach($template_tel as $tel_key => $value ) ใน php*}
<tr>
    <td>{$tel_key}</td> {*เปรียบได้กับ echo($tel_key); ใน php*}
    <td>{$value}</td> {*เปรียบได้กับ echo($value); ใน php*}
</tr>
{/foreach}
</table>
plain code

      การใช้งาน Smarty ต้องสร้างโฟลเตอร์เพิ่มเติมสองโฟลเดอร์คือ templates สำหรับเก็บ Template (*.tpl) และ templates_c สำหรับไฟล์ที่ใช้ในการคอมไพล์ Smarty จะคอมไพล์ Template เมื่อ Template ได้รับการเปลี่ยนแปลงแก้ไขเท่านั้น

      การใช้งาน Template Engine จะมีประโยชน์มาก ในกรณีที่โปรแกรมต้องแสดงผลต่างกันภายใต้ปัจจัยที่ต่างกัน ตัวอย่างที่ดีตัวอย่างหนึ่งคือการแก้ปัญหาเรื่องการแสดงผลของ Web-Browser ที่ต่างกัน ที่อาจได้รับการแก้ไขโดยการแสดง HTML-Tag ที่แตกต่างกันในแต่ละ Web-Browser (โดยปกติแล้วสามารถแก้ไขได้โดย CSS ในกรณีที่สุดโต่งมาก ๆ เท่านั้นที่ต้องแก้ไข HTML) การใช้เพียง PHP ในการแก้ปัญหาดังกล่าวเป็นเรื่องที่ยุ่งยากมาก ๆ แต่หากมี Template Engine เข้ามาช่วย การแก้ปัญหาดังกล่าวก็จะง่ายขึ้นมาก โค้ดข้างล่างนี้เป็นหนึ่งตัวอย่างในการแก้ปัญหาดังกล่าว 

<?php
$tel = Array("MrBlue" => "08001234567",
    "MrPink" => "08007654321",
    "Mrblue" => "08007777777",
    "MrWhite" => "08006655444"
    );
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign("template_tel",$tel);
if(preg_match("MSIE",$_SERVER[HTTP_USER_AGENT])){
   $smarty->display('bad_browser.tpl');
}
else{
   $smarty->display('standard.tpl');
}
?>
plain code

     นอกจากนี้ Template Engine จะมีประโยชน์มากในการออกแบบโปรแกรมจำพวก CMS (Content Management System) จะทำให้โปรแกรมมีความยืดหยุ่นมากขึ้น ทำให้เหล่า web-designer ทำงานได้ง่ายขึ้น และที่สำคัญที่สุดการใช้ Template Engine ทำให้โปรแกรมมีโครงสร้างที่ชัดเจนและสมบูรณ์มากขึ้น

Ref : biolawcom.de/blog/311

 

 

 

Tags

Requires Flash Player 9 or better.

Who's Online

We have 10 guests online

Translate

English Chinese (Simplified) Dutch Finnish French German Italian Japanese Korean Portuguese Russian Spanish Swedish Indonesian Ukrainian Vietnamese Thai Malay

Visitors

free counters

PTT Oil Price

Share |