• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    PHP3 之 FastTemplate

    發布: 2007-7-14 19:53 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網


    當你在建立一個站點的時候,可能不得不面對以下現實:
    站點需要一名程序員來設計程序和一名網站設計者來組織頁面。那么,是否有使兩者很好的結合起來的方法呢?

    有的,就是使用模板(FastTemplate:這個程序在本站的“程序和代碼”中可以找到),這將會使你的工作更加輕松。

    下面解釋一下使用模板的好處:

    1、在很短的時間內可以替換整個站點的外觀
    2、使程序員可以抽象編程,而無須接觸HTML代碼
    3、速度非常之快
    4、可以重復利用以前的模板

    模板的來歷:FastTemplate來自于同名的Perl軟件包(在CPAN上可以找到)。 它被移植到了PHP3平臺上。你只需要一個基礎類文件class.FastTemplate.php3

    先解釋一下使用模板和使用echo或print命令建立html頁面的區別,echo和 print在編寫短小的腳本時顯得非常實用,但是做出來的腳本的組織性和可定制性不好,修改起來頗廢工夫,模板在編寫支持多國語種的站點時的效率則要高的多,如用echo和print可以想象工作量之大。

    不用擔心,熟練使用FastTemplate會占去你一部分時間,但是這些時間會在你 以后的工作中彌補回來,尤其是大工程時。

    那么,怎么使用FastTemplate呢?

    第一步,只需使用函數<?php $tpl = new FastTemplate( "path"); ?>,其中path指向template目錄所在的路徑。這句函數建立了一個$tpl對象,以后可以對它指定參數,進行處理或用來建立各種頁面等等。

    FastTemplate是建立在這么一種理論基礎之上的,即假定一個web頁是由許多小的部分組成的。舉例來說,如WEB頁細分為TITLE、PAGE、FOOT等等。整個頁被賦予一個變量名,每一個小部分又被賦予一個變量名,最小的不可分割的部分通常就是字符串了,它也被賦予一個變量名。具體處理的時候,是一層層的包含關系。被包含部分在上一層中以宏{NAME}的形式出現。最后經過一層層的向上輸出,得到完整的頁面。

    那么最底層的向字符串賦值的函數是什么呢,就是:

    <?php $tpl->assign(NAME, "text"); ?>

    通過這個功能,FastTemplate將字符串text賦予了變量NAME,以后上一層就可替換宏{NAME}的內容為text。

    例如:

    $tpl->assign(NAME, "me");

    這就將變量NAME賦值了字符串"me"。

    第二步,$tpl需要知道其所調用的所有模板文件,即各個小部分。這個功能由define一個數組實現:

    <?php $tpl->define(); ?>

    例如:

    <?php $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl")); ?>

    這說明總共包括了兩個模板文件:foo.tpl和bar.tpl,并給它們指定了名字foo和bar。

    有了第一節的知識以后,你現在是否想試一試將模板文件中所包含的宏
    {MACROS}部分按照自己定義的變量替換呢?使用以下的命令即可實現:

    <?php

    $tpl->parse(PAGECONTENT, "foo");

    ?>

    這條命令的具體意義是:

    我們首先已經用assign定義了FOO模板中包含的若干宏變量,然后根據這些變量對模板文件FOO進行替換處理,并將替換后的模板文件賦予另一個變量名PAGECONTENT。

    完整如下:

    <?php

    $tpl->assign(NAME, "me");
    $tpl->parse(PAGECONTENT, "foo");

    ?>

    當然,我們還沒有作完,因為bar模板文件才是WEB的主輸出部分,BAR模板包含著FOO模板,BAR中還包含著宏變量{PAGETITLE}和{PAGECONTENT}等待處理,PAGECONTENT經過對FOO的處理已經得到,PAGETITLE還未指定,所以還要還要指定PAGETITLE,并調用函數

    <?php $tpl->parse(MAIN, "bar"); ?>

    進行處理,并將處理后的結果賦予變量MAIN。

    如下:

    <?php

    $tpl->assign(PAGETITLE, "FooBar test");
    $tpl->parse(MAIN, "bar");

    ?>

    很簡單吧,最后我們只需輸出頁面即可:

    <?php

    $tpl->FastPrint(MAIN);

    ?>

    下面就是foo.tpl,bar.tpl與最終的demo.php3文件。
    請大家仔細琢磨琢磨:

    -------------------------------------------------------------
    foo.tpl

    <!-- foo.tpl -->
    This does not do anything obvious. Please look at {NAME}.

    -------------------------------------------------------------
    bar.tpl

    <!-- bar.tpl -->
    <HTML>
    <HEAD><TITLE>Feature world - {PAGETITLE}</TITLE></HEAD>
    <BODY BGCOLOR=BLACK TEXT=WHITE>
    <H1>{PAGETITLE}</H1>
    {PAGECONTENT}
    </BODY>
    </HTML>

    ------------------------------------------------------------
    demo.php3

    <?php

    include "class.FastTemplate.php3";

    $tpl = new FastTemplate( ".");
    $tpl->define(array(foo => "foo.tpl", bar => "bar.tpl"));

    $tpl->assign(NAME, "me");
    $tpl->parse(PAGECONTENT, "foo");

    $tpl->assign(PAGETITLE, "Welcome!");
    $tpl->parse(MAIN, "bar");

    $tpl->FastPrint(MAIN);

    ?>
    ------------------------------------------------------------

    編制一個表格的例子:

    經過以上的闡述,大家是否已經明白一點了。
    下面是一個處理表格的例子,首先我們再學一些新知識。

    當我們當處理完foo模板后,并賦予了變量TPL1,我們可以將bar模板的內容處理后追加進TPL1中,這樣就不必定義過多變量,也易于理解,例處理完頁面的title后將content部分追加進去,最后將foot追加,生成完整一個頁面再輸出。這條命令就是:
    <?php $tpl->parse(TPL1, ".bar"); ?>
    其中的.表示追加。

    如下:

    <?php

    # 處理模板foo,并賦予變量TPL1
    $tpl->parse(TPL1, "foo");

    # 處理模板bar,并追加進變量TPL1
    $tpl->parse(TPL1, ".bar");

    ?>

    下面是一個完整的表格例子,大家好好揣摸揣摸

    page.tpl

    <HTML>
    <HEAD><TITLE>Feature world - {PAGE_TITLE}</TITLE></HEAD>
    <BODY BGCOLOR=BLACK TEXT=WHITE>
    <H1>{PAGE_TITLE}</H1>
    {PAGE_CONTENT}
    </BODY>
    </HTML>

    table.tpl

    <TABLE>
    <TR> <TH>name</TH> <TH>size</TH> </TR>
    {TABLE_ROWS}
    </TABLE>

    table_row.tpl

    <TR>
    <TD>{FILENAME}</TD>
    <TD>{FILESIZE}</TD>
    </TR>

    yad.php3

    <?php

    include "class.FastTemplate.php3";

    function InitializeTemplates() {
    global $tpl;

    $tpl = new FastTemplate( ".");
    $tpl->define(
    array(
    page => "page.tpl",
    table => "table.tpl",
    table_row => "table_row.tpl"
    )
    );
    }

    function ReadCurrentDirectory() {
    global $tpl;

    $handle = opendir( ".");
    while($filename = readdir($handle)) {
    $tpl->assign(FILENAME, $filename);
    $tpl->assign(FILESIZE, filesize($filename));
    $tpl->parse(TABLE_ROWS, ".table_row");
    }
    closedir($handle);
    $tpl->parse(PAGE_CONTENT, "table");
    }

    function PrintPage($title) {
    global $tpl;

    $tpl->assign(PAGE_TITLE, $title);
    $tpl->parse(FINAL, "page");
    $tpl->FastPrint(FINAL);
    }

    InitializeTemplates();
    ReadCurrentDirectory();
    Printpage( "Yet Another Demo");

    ?>

    關于速度的最后一點討論:

    看完以上的例子,你會說“太棒了!漂亮,但是,速度怎么樣呢?”

    沒問題,你的站點會變得很快。簡單的說:因為你是一個程序員,你應該關注于程序代碼的設計,代碼應該更加有效率,應容易修改和容易理解。使用FastTemplate可以可以幫助你做到這一點,所以它使你的工作更加輕松一些。

    如果你想替代一個已經建好的Web站點,我們建議使用regex(替換表達式)來替換,實際上FastTemplate使用的就是regex 來替換模板中的宏。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>