/
  • روش های ساخت template engine

  • بسته شده   امتیاز موضوع:
    • 2 رأی - میانگین امیتازات: 4
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی روش های ساخت template engine
    نویسنده پیام
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #1
    روش های ساخت template engine
    می خوام دو روش برای ساخت template engine برای پروژه ها رو اموزش بدم البته امیدوارم اشکالاتم رو دوستانم گوش زد کنن .

    نمیدونم اسمی که انتخاب کردم درسته یا نه لطفا اگه اشتباه هست راهنایی کنین .
    این پست رو در جواب دوستی که چند روز پیش در مورد masterpage سوال کرده بود قرار میدم .

    در روش اول سعی بر این هست که کامل html و php رو از هم جدا کنن که با این کار فهم و تغییر دادن کد خیلی راحت میشه (البته نه کامل کامل)

    میرم سراغ اموزش

    ابتدا ساختار کلی سایت رو با html ,css طراحی می کنیم .

    در واقع قسمت های ثابت در تمام صفحات رو طراحی میکنم .
    نمونش به صورت زیر هست .

    کد PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    link rel="stylesheet" href="style.css" />
    <
    title></title>
    </
    head>
    <
    body>

        <
    div id="holder">
            <
    div id="menu"></div>
            <
    div id="content"></div>
            <
    div id="footer"></div>
        </
    div>

    </
    body>
    </
    html


    قسمت هایی که قرار متن داخل اونها تغییر کنه عبارت است از title , menu ,content,footer پس این قسمت ها رو با یک علامت خاص مشخص میکنیم .

    اینکار رو به صورت زیر انجام میدیم.

    کد PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    link rel="stylesheet" href="style.css" />
    <
    title>{title}</title>
    </
    head>
    <
    body>

        <
    div id="holder">
            <
    div id="menu">{menu}</div>
            <
    div id="content">{content}</div>
            <
    div id="footer">{footer}</div>
        </
    div>

    </
    body>
    </
    html

    قالب اصلی رو ساختیم حالا میریم سر وقت کد نویسی برای بغییه کارا یه فایل جدید با نام template.class.php تعریف میکنیم .
    کاری که ما قررا هست توسط این کلاس انجام بدیم از قرار زیر هست.
    محتوای مربوط به قسمت های مختلف مانند title و دیگر قسمت ها رو دریافت و در محل های مربوط به خودشون قرار بدیم که این قسمت رو با جایگذینی قسمت های مشخص کرده در فایل html مون با محتوامون انجام میدیم .

    بغییه اموزش رو در اولین فرصت قرار میدم .
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۳ ۱۰:۳۱ عصر، توسط php.)
    ۱۳۸۷ اسفند ۳ ۱۰:۰۹ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط : abedi98 admin molana amir.s میلاد oia Maya hpsarvari texas mohsenkw Y.P.Y masoudmanson
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #2
    RE: روش های ساخت template engine
    حالا میریم سر وقت بغییه اموزش و ساخت کلاس .


    روش کار رو در جلسه قبل توضیح دادم و کلیات کار همون ها هست ولی طرز نوشتن کلاس دلبخواهی هست و شما به هر نحوی که صلاح بدونین و خواسته باشین می تونین اون رو تغییر بدین .


    کد PHP:
    <?php
    class template{
        
        private 
    $array_varible=array();
        private 
    $file;

        function 
    set_varible($index,$value)
        {
            
    $this->array_varible["$index"]=$value;
        }
        function 
    get_template()
        {
            
            if( 
    file_exists("template.html"))
            {
                
    $fh fopen("template.html""r");
                
    $this->file fread($fh,filesize("template.html"));
                foreach(
    $this->array_varible as $var =>$value)
                {
                    
                    
    $this->file=str_replace('{'.$var.'}',$value,$this->file);
                }
        
            }
        
        }
        function 
    __destruct()
        {
            echo 
    $this->file;
        }
    }

    ?>

    در اول کار یک ارایه خصوصی برای نگهداری مقادیری مانند عنوان صفحه محتوا و... و یک متغییر خصوصی برای نگهداری محتوای فایل template تعریف کردایم .

    بعد سه تابع تعریف کردایم تابع اول یا set_varible نام فیلد و مقدار اون رو میگیره و در ارایه قرار میده . به عنوام مثال set_varible("title","my first page") a و اما تابع دوم این تابع در ابتدا وجود فایل را چک می کنه و در صورت موجود بودن ان کل فایل را خوانده و ان را در یک متغییر قرار می دهد سپس داخل ارایه حرکت کرده وبه ازای هر خانه ارایه یک بار تابع str_replace را فراخوانی کرده و توسط ان مقدار اندیس ارایه را همراه با دو علامت کروشه در دو طرف ان در متغییر حاوی فایل تمپلیت جستجو کرده سپس مقدار ان را با مقدار وجود در ارایه عوض می کنیم .

    درتابع اخر نیز مقادیر را به خروجی میفرستیم . این تابع به صورت خودکار در در زمانی که فضای گرفته شده ازاد شود فراخوانی میشود .
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۹ ۱۰:۳۵ صبح، توسط php.)
    ۱۳۸۷ اسفند ۵ ۰۳:۱۱ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط : scooter amir.s texas
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #3
    RE: روش های ساخت template engine
    در روش اول در حالیکه php را از html جدا کرده بودیم و لی یک مشکل داشت و ان هم این بود که برای هر قسمت که قرار بود جاگذین شود یک بار کل فایل برای پیدا کردن ان قسمت خوانده و سپس قسمت پیدا شده با محتوای مورد نظر جایگذین می شد و این خود زمان زیادی را صرف می کرد .

    در روش دوم از روشی بهتر استفاده می شود که سرعت ان به مراتب از این روش بیشتر است و در مقابل هنوز ازتباط php و html قطع نشده است .


    توضیح این روش را بزودی در اینجا قرار خواهم داد .
    __________________________________________________________________________
    ۱۳۸۷ اسفند ۹ ۱۱:۵۶ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط : mohsenkw
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #4
    RE: روش های ساخت template engine
    در این روش شما ساختار فایل template را به صورت زیر تعریف می کنید و این بار پسوند ان را php تعیین می کنید

    کد PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    link rel="stylesheet" href="style.css" />
    <
    title><?php echo $this->title ?></title>
    </head>
    <body>

        <div id="holder">
            <div id="menu"><?php echo $this->menu ?></div>
            <div id="content"><?php echo $this->content ?></div>
            <div id="footer"><?php echo $this->footer ?></div>
        </div>

    </body>
    </html> 
    در اینجا ما به جای جایگذینی علامات خاص با محتوا متغییر هایی را قرار داده ایم و فقط ما این متغییر ها را توسط کلاس template مقدار میدهیم


    کلاس template را به صورت زیر پیاده سازی می کنیم و نام ان را template.class.php می گذاریم



    کد PHP:
    <?php
      
    class template
      
    {
          private 
    $menu;
        private 
    $content;
        private 
    $title;
        private 
    $footer;

        
        
        function 
    set_menu($menu)
        {
            
    $this->menu=$menu;
        }
        function 
    set_content($content)
        {
            
    $this->content=$content;
        }
        function 
    set_title($title)
        {
            
    $this->title=$title;
        }
        function 
    set_footer($footer)
        {
            
    $this->footer=$footer;
        }
        
        function 
    __destruct()
          {
            include(
    'template.php');
        }
      }
     
    ?>
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۲۳ ۱۱:۲۳ عصر، توسط php.)
    ۱۳۸۷ اسفند ۲۳ ۱۱:۱۷ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط : amir.s texas mohsenkw
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #5
    RE: روش های ساخت template engine
    با کار شما موافقم ولی کپی از یک متغییر به یک متغییر دیگه زمان بر نیست .

    با این کار می خواستم قسمتی رو که با پایگاه داده کار میکنه با قسمت که وظیفه نمایش رو بر عهده داره جدا کنم .
    در واقع یکمی به سمت تکنیک mvc پیش بریم البته نمی دونم چغدر در این زمینه موفق بودم .
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۷ اسفند ۲۴ ۰۳:۵۲ عصر، توسط php.)
    ۱۳۸۷ اسفند ۲۴ ۰۳:۵۰ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط :
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #6
    RE: روش های ساخت template engine
    محمد جان درسته که از متغییر اضافه استفاده کردم و حافظه اضافی دارم مصرف می کنم ولی در مقابل این حافظه اضافه چیز بیشتری بدست اوردم

    و اون جدا کردن کامل قسمت اتصال به بانک اطلاعاتی با قسمت نمایش اطلاعات هست که خود این می تونه در بهبود سیستم در اینده خیلی مفید باشه .
    __________________________________________________________________________
    ۱۳۸۷ اسفند ۲۵ ۱۲:۱۲ صبح
    یافتن ارسال‌ها WWW
     تشکر شده توسط :
    php آفلاین
    hossein
    ****

    ارسال‌ها: 612
    تاریخ عضویت: ۱۳۸۷ دي ۴
    اعتبار: 13
    تشکرها : 467
    ( 798 تشکر در 277 ارسال )
    ارسال: #7
    RE: روش های ساخت template engine
    اقا محمد اینجا داریم با هم بحث می کنیم تا بتونیم یه روش خوب و یه نتیجه گیری عالی بگیریم .

    امیدوارم از حرفام ناراحت نشده باشی


    در مورد سوالتون هم من اطلاعات درستی ندارم ولی امیدوارم بچه های سایت بتونن در این مورد جواب کاملی بدن چون برای خود من هم جالبه .

    اگه یکی بیاد روش سیستم رو هم تجذیه و تحلیل کنه که دیگه عالی میشه .
    __________________________________________________________________________
    ۱۳۸۷ اسفند ۲۵ ۱۲:۵۶ عصر
    یافتن ارسال‌ها WWW
     تشکر شده توسط :
    mooosti آفلاین
    عضو جدید
    **

    ارسال‌ها: 9
    تاریخ عضویت: ۱۳۹۱ بهمن ۲۱
    اعتبار: 0
    تشکرها : 3
    ( 0 تشکر در 0 ارسال )
    ارسال: #8
    RE: روش های ساخت template engine
    HuhExclamation
    ۱۳۹۱ بهمن ۲۱ ۰۲:۱۵ صبح
    یافتن ارسال‌ها
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2718 تشکر در 1692 ارسال )
    ارسال: #9
    RE: روش های ساخت template engine
    4 سال بعد ...
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ بهمن ۲۱ ۰۳:۰۲ صبح
    یافتن ارسال‌ها WWW
     تشکر شده توسط : undefined aliwebdesign
    « قدیمی تر | تازه‌ تر »

    بسته شده
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS