2005-09-07

    SmartTemplate学习笔记

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://sunswin.blogbus.com/logs/1417061.html

    http://www.smartphp.net/content/smarttempl...bout/about.html

    目录

    1、SmartTemplate的效率

    2、基本变量

    3、逻辑运算结构

    4、模式(Methods)

    5、扩展类(Extensions) 未完成

    ------------------------------------------------------------------------

    1、SmartTemplate的效率

    虽然他有很多的程序来形成强大的功能,但在执行时只有你调用的才被导入,所以不用担心这方面的速度影响,同样这套模版系统是为最快的执行效率而优化过的,比起目前市场上常见的Smarty,要快不少(Smarty采用后期缓存,所以比较可能不是很准确)。

     

    2、SmartTemplate的变量

    Array的变量是由SmartTemplate内建函数assign()来赋值的
    具体语法如下
    assign ( 模版中的变量, 要替换的内容 )

    assign ( Array内容 )



    正如其他程序的变量一样,smartTemplate的变量是由特殊的{}所包含的。里面的内容可以是String,Array,Int,或者是Long Text等等(基本上php支持的)

    在储存Array数据时,smartTemplate运用了我们常见的父子级分割符".",所以一个特殊的Array数据由Array Handle和具体位置的索引组成(Numerical Index or Associative Index)。
    下面是一个例子

    在php环境下运行以下程序
    代码:

        $template  =  new SmartTemplate('template.html');

        $text  =  'Sample Text';
        $template->assign( 'TITLE', $text );

        $template->output();

    ?>


    模版
    代码:
    {TITLE}


    输出
    代码:
    Sample Text



    在只有一个Array的情况下,可以直接省略前面的array handle,就象在使用javascript时,document.window.close()可以省略为window.close()

    php
    代码:

        $user  =  array(
                     'NAME'  => 'John Doe',
                     'GROUP' => 'Admin',
                     'AGE'   => '42',
                  );

        $template  =  new SmartTemplate('user.html');

        $template->assign( $user );

        $template->output();

    ?>


    模版
    代码:
    Name:  {NAME}
    Group: {GROUP}
    Age:   {AGE}


    输出
    代码:
    Name:  John Doe
    Group: Admin
    Age:   42




    下面是另外一个例子。使用了SmartTemplate的循环函数XXXXXX

        {TITLE}






    代码:

    Sample Links



        PHP

        Apache

        MySQL




    3、SmartTemplate的逻辑控制结构

    ★If和end If

    语法:
    变量已被赋值!
    如果IF后面直接跟变量,变量为Null时会返回0,否则返回1

    Your name is John Doe!
    ==判断是否相等,如果相等返回1,不相等返回0

    Your name is not John Doe!
    !=判断是否不等,如果成立返回1,相等则返回0

    例子:
    PHP

    代码:

        require_once "class.smarttemplate.php";
        $page = new SmartTemplate("if.html");

        $page->assign( 'username',   'John Doe' );
        $page->assign( 'usergroup',  'ADMIN' );
        $page->assign( 'picture',    '' );

        $page->output();

    ?> 


    HTML
    代码:

    Welcome, {username}









    ADMIN Login



     


    输出代码:

    Welcome, John Doe






    ADMIN Login


     


    ★IF的子局 else
    如果else子句出现在一个逻辑循环中,当if的条件不成立时则会被运行。
    例子
    代码:

        require_once "class.smarttemplate.php";
        $page = new SmartTemplate("else.html");

        $page->assign( 'username',   'John Doe' );
        $page->assign( 'usergroup',  'ADMIN' );
        $page->assign( 'picture',    '' );

        $page->output();

    ?> 


    模版

    代码:


    Welcome, {username}













    Picture not available!








    ADMIN Login




    You are in guest mode!




    输出

    代码:

    Welcome, John Doe







    Picture not available!






    ADMIN Login


     



    ★elseif
    elseif是else和if组合起来的一种结构,其意义为"除此之外如果..."
    以下是一个例子
    代码:

        require_once "class.smarttemplate.php";
        $page = new SmartTemplate("elseif.html");

        $page->assign( 'usergroup',  'INTERNAL' );

        $page->output();

    ?> 


    模版文件
    代码:


    管理员登陆




    帮助人员登陆




    普通方式登陆




    You don't even have a usergroup!




    运行php得到的输出
    代码:
    普通方式登陆



    ★Begin...End

    这个语句用于读取一个整数索引矩阵(Numerical Array,以数字为索引的数组)的值.而每个整数矩阵的子矩阵则成为以字符串为索引的矩阵(Associative Array)然后在之间的语句将会被读取并且重复执行.

    附加:,每个associative array(字符串为索引的矩阵)会有两个附加的值
    ROWCNT : 此元素在父矩阵中的具体位置 (0,1,2,3,...n) (就是目前在第几个矩阵)
    ROWBIT : 矩阵序号的最后一位. (0,1,0,1,0,1,...)

    下面是一个例子

    PHP代码:

    代码:

        require_once "class.smarttemplate.php";
        $page = new SmartTemplate("begin_end.html");

        $users = array(
                   array( 'NAME' => 'John Doe',   'GROUP' => 'ADMIN' ),
                   array( 'NAME' => 'Jack Doe',   'GROUP' => 'SUPPORT' ),
                   array( 'NAME' => 'James Doe',  'GROUP' => 'GUEST' ),
                   array( 'NAME' => 'Jane Doe',   'GROUP' => 'GUEST' ),
                 );

        $page->assign( 'users',  $users );

        $page->output();

    ?> 


    HTML模版

    代码:


    <>
    <>
    <>
    <>
    <>
    <>



    <>
    <>
    <>
    <>
    <>



    No Username Usergroup
    {ROWCNT} {NAME} {GROUP}




    最后的输出
    代码:


    <>
    <>
    <>
    <>
    <>
    <>


    <>
    <>
    <>
    <>
    <>


    <>
    <>
    <>
    <>
    <>


    <>
    <>
    <>
    <>
    <>


    <>
    <>
    <>
    <>
    <>


    No Username Usergroup
    0 John Doe ADMIN
    1 Jack Doe SUPPORT
    2 James Doe GUEST
    3 Jane Doe GUEST



    ☆smartTemplate的方法

    注:以下列出的方法并不会在模版设计中出前,他们属于smartTemplate的代码编辑部分,但是如果为了实现更深一步的模版设计,下面的内容是肯定有用的.

    ★基础方法:assign (中文意思:赋值)

    语法:
    assign ( 变量名, 混合内容 )

    或者

    assign ( 矩阵变量 )

    更多介绍在变量介绍部分

    ★Append(附加)
    语法:append ( 变量名, 内容 )

    对所提供的变量附加提供的内容

    例子:
    代码:

        $page  =  new SmartTemplate('links.html');

        $page->append('links' => array(
                                     'TITLE' => 'PHP',
                                     'URL'   => 'http://www.php.net/'
                                 ));
        $page->append('links' => array(
                                     'TITLE' => 'Apache',
                                     'URL'   => 'http://www.apache.org/'
                                 ));
        $page->append('links' => array(
                                     'TITLE' => 'MySQL',
                                     'URL'   => 'http://www.mysql.com/'
                                 ));
        $page->output();

    ?>


    模版

    代码:

    Sample Links





        {TITLE}






    最终输出

    代码:

    Sample Links



        PHP

        Apache

        MySQL




    另外一个附加字符串的例子:

    代码:

        $page  =  new SmartTemplate('template.html');

        $page->append('TITLE' => 'Hello ');
        $page->append('TITLE' => 'World ');
        $page->append('TITLE' => '!');

        $page->output();

    ?>


    输出将会得到

    代码:
    Hello World !

    收藏到:Del.icio.us




    Tag:web PHP
    引用地址: