یکشنبه 25 آذر 1397 | Sunday 16 th of December 2018 صفحه اصلی گروه الکترونیکی کامپیوتر
5-1 ) چرا از Template استفاده کنیم ؟

در یک جمله می توان گفت برای جدا کردن منطق برنامه از نحوه ارائه!با استفاده از یک Templating    Engine  می توان به این هدف دست یافت به ترتیبی که برنامه نویس در گیر ارائه و طراح رابط کاربر درگیر کار برنامه نویس نشوند و با یک زبان مشترک باهم تعامل خواند داشت.  به این ترتیب برنامه نویس خیلی راحتر می تواند منطق برنامه را عوض کند بدون اینکه در گیر ارائه شود و طراح نیز می تواند بدون کمک برنامه نویس شکل و شمایل یک سایت را کاملاً عوض کند.
این چند جمله باید تا حدی برای شما روشن شده باشد که با استفاده از این روش تا چه حد انعطاف در کار بوجود می اید.  جالب نیست؟!

Smarty از  PHP و Zend Engine استفاده می کند و با استفاده از ان، برنامه ها را با کمترین سربار نسبت به حالتی که از Template استفاده نشده باشد اجرا می شوند چون Smarty یک بار الگو را کامپایل کرده و تا وقتی که الگو تغییر پیدا نکند از نسخه کامپایل شده استفاده می نماید برای بالا بردن کارایی امکانات cachingهم دارد.

Smarty
چگونه کار می کند ؟
Smarty  بصورت شی گرا طراحی شده و عمل می کند پس برای استفاده از ان باید یک instance از ان ایجاد کنیم :
require_once('Smarty.class.php'); // use absolute path here, if necessary
$smarty = new Smarty;
?>
$smarty->template_dir = '/var/www/templates/app1/template/';
$smarty->compile_dir = '/var/www/templates/app1/compile/';
$smarty->config_dir = '/var/www/templates/app1/config/';
$smarty->cache_dir = '/var/www/templates/app1/cache/

شاخه  template شاخه ای است که Smarty در ان به دنبال فایلهای .tpl می گردد.
شاخه compile  شاخه ای است که Smarty در ان الگوهای کامپایل شده را ذخیره می کند.
شاخه config  شاخه ای است که Smarty در ان به دنبال فایلهای تنظیمات می گردد.
شاخه cache شاخه ای است که Smarty در ان به دنبال فایلهایcache را ذخیره می کند.
روش دیگری نیز برای معرفی این متغیر ها وجود دارد و ان هم استفاده از مفهوم ارث بری است :
// require the Smarty class
require_once('Smarty.class.php');
// extend the Smarty class
class my_Smarty extends Smarty {
function my_Smarty() {
// create the Smarty object
$this->Smarty();
// set Smarty folders
$this->template_dir = '/var/www/templates/app1/template/';
$this->compile_dir = '/var/www/templates/app1/compile/';
$this->config_dir = '/var/www/templates/app1/config/';
$this->cache_dir = '/var/www/templates/app1/cache/';
// set other Smarty options
$this->use_sub_dirs = false;

}
}
?>

حالا وقت ان رسیده که استفاده از Smarty را در عمل ببینیم :
//test.php
// require the Smarty class
require_once('Smarty.class.php');
// extend the Smarty class
class my_Smarty extends Smarty {

function my_Smarty() {

// create the Smarty object
$this->Smarty();
// set Smarty folders
$this->template_dir = '/var/www/templates/app1/template/';
$this->compile_dir = '/var/www/templates/app1/compile/';
$this->config_dir = '/var/www/templates/app1/config/';
$this->cache_dir = '/var/www/templates/app1/cache/';

// set other Smarty options
$this->use_sub_dirs = false;

}

}
//creating an instance of my_smarty
smarty=new my_smarty();
// assign values from PHP
$smarty->assign('title', 'this is a sample');
$smarty->assign('testـstatement', 'Hello friends');

// display a template
$smarty->display('test.tpl');
?>

//test.tpl



{ $testـstatement }!

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26