pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت یک موتور تمپلت با Oop
02-02-2013, 03:36 PM (آخرین ویرایش در این ارسال: 02-02-2013 04:08 PM، توسط agotd.)
ارسال: #1
ساخت یک موتور تمپلت با Oop
سلام
دوستانی که بحث رو دنبال کردند دیگه حالا آمدگی پروژه های خیلی بزرگ تر رو دارند.
با یک تمپلت انجین کار رو شروع می کنیم.
زنگ تفریح
این موتور تمپلت خیلی سادست پس زیاد خوشحال نشید و فردا برید یه smrty برا خودتون بسازید و پس فردا هم یک PHP جدید
ابتدا به کد مربوط به فایل کلاس اصلی نگاه کنید.

کد php:
<?php
class template
{
    var 
$tpl_vars;
     
    function 
template()
    {
        
$this->tpl_vars = array();
    }
 
    function 
assign($var_array)
    {
         
        if (!
is_array($var_array))
        {
            die(
'template::assign() - $var_array must be an array.');
        }
        
$this->tpl_vars array_merge($this->tpl_vars$var_array);
    }
 
    function 
parse($tpl_file)
    {
 
        if (!
is_file($tpl_file))
        {
            die(
'template::parse() - "' $tpl_file '" does not exist or is not a file.');
        }
        
$tpl_content file_get_contents($tpl_file);
 
        foreach (
$this->tpl_vars AS $var => $content)
        {
            
$tpl_content str_replace('{' $var '}'$content$tpl_content);
        }
        return 
$tpl_content;
    }
 
    function 
display($tpl_file)
    {
        echo 
$this->parse($tpl_file);
    }
}
?>


این فایل آموزش استفاده از کلاس :

کد php:
<?php
 
require_once('tpl.class.php');
$tpl =& new template();
$tpl->assign(array(
    
'title'   => 'Simple Template Engine Test',
    
'content' => 'This is a test of the <a href="http://www.php.net">Simple Template Engine</a>'
));
$tpl->display('example.tpl');
 
?>

این هم فایل example.tpl

کد php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"
>
<
html>
<
head>
<
title>{title}</title>
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</
head>
 
<
body>
 
<
p>{content}</p>
 
</
body>
</
html

عملکرد کلاس

3 تا تابع اصلی داره این کلاس

کد php:
function assign($var_array


این تابع کار مقدار دهی رو انجام می ده . بهتر بگم ذخیره مقدار ها
اول از همه چک می کنه که ورودی تابع یک آرایه باشه .. در غیر این صورت خطا صورت می گیره
سپس متغیر جدید با متغیر های قبلی ادقام می شوند. در صورت وجود ابهام در مورد عملکرد array_merge به اینجا نگاهی بی اندازید.

کد php:
function parse($tpl_file


این تابع کار اصلی رو انجام می ده ، یعنی باید مقدار متغیر ها رو جایگذین کنه .
ابتدا بررسی می کنه که آیا فایلی که آدرس داده شده موجو هست یا خیر. در صورتی که وجود نداشته باشه خطا صادر می شه .
در خط بعد توسط تابع file_get_contents تمامی اطلاعات موجود در فایل مورد نظر بصورت استرینگ به متغیر tpl_content$ داده می شود. در صورت وجود ابهام در مورد عملکرد تابع file_get_contents به اینجا نگاهی بی اندازید.
سپس توسط یک foreach ساده و با کمک تابع str_replace مقدار متغیر ها جایگذین نام متغیر ها می شوند.
در صورت وجود ابهام در مورد عملکرد تابع str_replace به اینجا نگاهی بی اندازید.
در صورت وجود ابهام در مورد عملکرد foreach به اینجا نگاهی بی اندازید

کد php:
function display($tpl_file

این تابع هم وظیفه نمایش اطلاعات رو به عهده داره.

عملکرد فایل آموزش استفاده از کلاس

ابتدا فایل کلاس رو صدا زده . سپس یک شی رو به کلاس نسبت داده . سپس یک آرایه رو در موتور تمپلت ذخیره کرده . با استفاده از تابع Display فایل رو نمایش داده .

فکر نمی کنم موضوع مبهمی مونده باشه .. موفق باشید.
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پیام‌های داخل این موضوع
ساخت یک موتور تمپلت با Oop - agotd - 02-02-2013 03:36 PM

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition