zoukankan      html  css  js  c++  java
  • php基础复习(一)smarty模板

    一。基本配置
    第一步:下载smarty:官网www.smarty.net
    第二步:加载类文件和更改配置

    1. //加载类文件

    require_once '../libs/Smarty.class.php';
    //实例化对象
    $smarty=new Smarty();
    //更改配置 如果不更改就不用写
    $smarty->setTemplateDir('./templates');//设置模版目录
    $smarty->setCompileDir('./templates_c');//设置编译目录
    $smarty->setCacheDir('./cache');//设置缓存目录
    $smarty->setConfigDir('./configs');//设置配置文件所在目录
    $smarty->addPluginsDir('./plugins');//添加插件目录
    $smarty->left_delimiter='{';
    $smarty->right_delimiter='}';
    //设置缓存
    $smarty->debugging = true; //开启的调试窗口
    $smarty->caching = true;
    $smarty->cache_lifetime = 120;
    第三步:许可变量与显示
    $smarty->assign('chen','123');
    //显示模版
    $smarty->display('1.html');

    二。常见类型的输出
    $smarty->assign('int',PHP_INT_MAX);
    $smarty->assign('float',12.3);
    $smarty->assign('bool',true);
    $smarty->assign('string','this is a test');
    $smarty->assign('arr',array('a','b','c','username'=>'king','age'=>12));
    $smarty->assign('arr1',array('a'=>array(1,2,3),'b'=>array(11,22,33)));
    $smarty->assign('obj',new Test());
    $smarty->assign('resource',fopen('index.php','r'));
    $smarty->assign('null',NULL);
    class Test{
    public $username;
    public $email;
    public $sex;
    public function __construct(){
    $this->username='king';
    $this->email='382771946@qq.com';
    $this->sex='男';
    }
    public function sayHi(){
    echo 'Say Hi To Everybody<br/>';
    }
    public function test(){
    return 'this is a test';
    }
    }
    三、模板注释
    {*模版注释,注释不会在模版文件的最后输出中出现*}
    {*这是HTML注释不一样*}
    四、在模板中定义变量
    通过assign在模板中声明变量
    { assign var=num1 value=1 }
    num1:{$num1} <br />
    声明变量
    {$test="hello"}
    {$test} <br />
    标签嵌套
    {$test1="{$test} chen"}
    {$test1} <br />
    声明数组
    {assign var=arr3 value=[1,2,3]}
    {$arr3.0} <br />
    {$arr3[1]} <br />
    {assign var=arr4 value=['username'=>'queen','age'=>12]}
    {$arr4.username} <br />
    {$arr4['age']} <br />
    {$arr5=['a','b','c',['test'=>'test','test1'=>'test1','eee']]}
    {$arr5.0} <br />
    {$arr5[3]['test']} <br />
    {$arr5[3][0]} <br />
    可变变量
    {$world='world'}
    {$hello_world="this is hello world"}
    {$hello_{$world} <br />
    四、预保留变量

    session_start();
    $_SESSION['username']='admin';
    $_SESSION['id']=1;
    define('TEST','This is a test');

    在模板中
    {$smarty.session.username}
    {$smarty.session.id}
    可以使用的预保留变量
    1>页面请求变量
    $smarty.get.page 相当于PHP中的$_GET['page']
    $smarty.post.page 相当于PHP中的$_POST['page']
    $smarty.cookies.username 相当于PHP中的$_COOKIE['username']
    $smarty.session.username 相当于PHP中的$_SESSION['username']
    $smarty.server.SERVER_NAME 相当与PHP中的$_SERVER['SERVER_NAME']
    $smarty.env.PATH 相当于PHP中的$_ENV['PATH']
    $smarty.request.username 相当于PHP中的$_REQUEST['username']
    得到当前的时间戳
    {$smarty.now}
    {$smarty.now|date_format:'%Y-%m-%d %H:%M:%S'}
    {time()}
    {date("Y-m-d H:i:s",time())}
    得到PHP脚本中的常量的值
    PHP版本:{$smarty.const.PHP_VERSION} <br />
    PHP_OS: {$smarty.const.PHP_OS} <br />
    {$smarty.const.TEST}
    得到配置文件中的值
    {config_load "reset.conf"}
    title:{$smarty.config.title} <br />
    title:{#title#} <br />
    返回经过处理的当前模版名(不包含目录)
    当前模版名称:{$smarty.template} <br />
    返回当前的模版目录名
    当前模版目录名称:{$smarty.current_dir} <br />
    返回Smarty的版本号
    Smarty Version:{$smarty.version} <br />
    返回当前的左右定界符
    左定界符:{$smarty.ldelim} <br />
    右定界符:{$smarty.rdelim} <br />
    其它常用:
    {$smarty.capture}:捕获内置的capture模版输出
    {$smarty.section}:用来指向section循环的属性
    {$smarty.block.child}:返回子模版文本块
    {$smarty.block.parent}:返回父模版文本块

    五、变量调节器
    capitalize:将变量里的单词的首字母大写,ucwords*
    单词首字母大写:{$test|capitalize}
    {$test|ucwords}
    {*count_characters:计算变量值里的字符个数,
    参数值boolean型决定是否计算空格数,默认不计算*}
    字符个数:{$test|count_characters}
    字符个数带空格:{$test|count_characters:true}
    cat:将cat里的参数值连接到给定的变量后面,默认为空
    连接字符:{$test|cat:'!':'<br/>':'hello world!':"maizixueyuan"}
    count_paragraphs:计算变量里的段落数量
    段落数量:{$content|count_paragraphs}
    count_sentences:计算变量里的句子,句子由点号、问号或感叹号分隔(.?!)。
    段落中的句子: {$content|count_sentences}
    count_words:计算变量的单词数
    单词数:{$content|count_words}
    date_format:日期格式化
    {$smarty.now|date_format:"%Y-%m-%d"} <br />
    赋初始值
    为变量赋初始值:{$kickName|default:'king'} <br />
    {*escape HTML转码,URL转码等,默认是HTML转码*}
    默认没有转码
    {$string} <br />
    转换HTML实体或者写escape:'html'
    {$string|escape} <br />
    {$string|escape:'html'} <br />
    lower|upper转换成小写或者大写
    {$string1|lower} <br />
    {$string1|upper} <br />
    indent产生缩进,第一个参数指定缩进多少个字符,默认是四个字符;
    第二个参数,指定缩进用什么字符代替
    {$string1|indent:4} <br />
    {$string1|indent:4:'*'} <br />
    nl2br 将字符串中的换行符转换成<br/>像PHP中的nl2br()
    {$string2|nl2br} <br />
    replace:字符串替换,第一个参数是搜索的内容;
    第二个参数是搜索到之后替换的内容;
    相当于PHP中的str_replace()函数*}
    {$string2|replace:'maizi':'麦子'} <br />
    spacify:在字符串的每个字符之间插入空格或者其它字符,默认是空格
    {$string2|spacify} <br />
    {$string2|spacify:'*'} <br />
    strip:替换所有重复的空格,换行和tab为单个或者指定的字符串;
    可以指定要替换的字符串
    *}
    {$string2|strip} <br />
    {$string2|strip:'?'} <br />
    {*strip_tags:去除所有的HTML标记*}
    {$string3} <br />
    {$string3|strip_tags} <br />
    {*string_format:格式化字符串*}
    {$number=3.1415926}
    {$number} <br />
    {$number|string_format:"%.2f"} <br />
    {$number|string_format:"%d"} <br />
    对于同一个变量,你可以使用多个修改器。它们将从左到右按照设定好的顺序被依次组合使用。 使用时必须要用"|"字符作为它们之间的分隔符。
    转换成实体|小写|用*进行缩进
    {$string|escape|lower|indent:'4':'*'} <br />
    也可以使用PHP的系统函数
    {$string4='maiziedu'}
    {$string4|substr:2:2} <br />
    {$string4|strtoupper} <br />
    系统中默认的变量调节器函数都是Smarty自带的插件
    都在plugins目录下
    {$filename='1.txt.jpeg'}
    {$filename|ext} <br />
    <hr />
    {$string4|font:'20px':'green':'Microsoft Yahei':'normal'}
    <hr />
    {$string4|font:'30px':'purple':'华文彩云':'bold'} <br />
    {$string4|strShuffle} <br />

    六、Smarty模版中的内置函数
    assign 声明变量
    {assign var='username' value='king'}
    用户名:{$username} <br />
    相当于assign函数属性的简写
    {assign username test}
    用户名:{$username} <br />
    相当于assign的缩写,直接写变量名称=值
    {$username='queen'}
    用户名:{$username} <br />
    {$array=['a','b','c',1,2]}
    {$array.0} <br />
    通过append动态追加元素
    {append var='array' value='d'}
    {append var='array' value='king' index='username'}
    {print_r($array)}
    <hr />
    <h3>流程控制相关</h3>
    {$username='maizi'}
    1、 if
    {if $username=='maizi'}
    欢迎 <br />
    {/if}
    3、if...else
    {if $username eq 'maizi1'}
    Hello Maizi1 <br />
    {else}
    Hello Everybody <br />
    {/if}
    3、if ... elseif...
    {$day=3}
    {if $day==1}
    星期一 <br />
    {elseif $day==2}
    星期二 <br />
    {else}
    非法日期
    {/if}
    4、is [not] div by是否能整除
    {$num1=8}
    {if $num1 is div by 4}
    整除 <br />
    {else}
    不能整除 <br />
    {/if}

    5、is[not] even是否为偶数
    {$num1=3}
    {if $num1 is not even}
    不是偶数 <br />
    {else}
    是偶数 <br />
    {/if}


    6、for循环
    步长为1的简单循环
    {for $var=1 to 10}
    {$var} <br />
    {/for}

    设置步长
    {for $var=1 to 10 step 2}
    {$var} <br />
    {/for}

    通过max设置最大循环次数
    {for $var=1 to 100 step 2 max=10}
    {$var} <br />
    {/for}

    当循环条件不成立的时候可以使用forelse
    {for $var=5 to 1}
    {$var} <br />
    {forelse}
    循环条件不成立时执行的代码 <br />
    {/for}


    使用while循环
    {$var=10}
    {while $var>=0}
    {$var--} <br />
    {/while}


    遍历数组可以通过foreach 和 section进行遍历
    通过foreach进行遍历*
    {$arr=['a','b','c','d']}
    {if is_array($arr)}
    {foreach $arr as $k=>$v}
    键名={$k}---键值={$v}
    <hr />
    {/foreach}
    <hr />
    {foreach $arr as $v}
    键值={$v} <br />
    {/foreach}
    <hr />
    {*如果没有指定数组下标 可以通过@key得到*}
    {foreach $arr as $v}
    键名={$v@key}--键值={$v} <br />
    {/foreach}
    {/if}

    当数组没有值时可以使用foreachelse
    {foreach $arr1 as $val}
    {$val}
    {foreachelse}
    没有结果
    {/foreach}

    foreach支持嵌套
    {foreach $users as $user}
    {foreach $user as $val}
    {$val} <br />
    {/foreach}
    <hr />
    {/foreach}
    <hr color='red'/>
    <h2>用户列表</h2>
    <table border='1' width='80%' cellpadding='0' cellspacing='0'>
    <tr>
    <td>编号</td>
    <td>用户名</td>
    <td>邮箱</td>
    <td>地址</td>
    </tr>
    {foreach $users as $user}
    <tr>
    <td>{$user.id}</td>
    <td>{$user.username}</td>
    <td>{$user.email}</td>
    <td>{$user.addr}</td>
    </tr>
    {foreachelse}
    <tr>
    <td colspan='4'>没有用户</td>
    </tr>
    {/foreach}
    </table>

    foreach中有一些常用属性
    <hr color='blue'/>
    <h2>用户列表</h2>
    <table border='1' width='80%' cellpadding='0' cellspacing='0'>
    <tr>
    <td>编号</td>
    <td>用户名</td>
    <td>邮箱</td>
    <td>地址</td>
    </tr>
    {foreach $users as $user}
    {if $user@first}
    <tr bgcolor='red'>
    {elseif $user@last}
    <tr bgcolor='green'>
    {elseif $user@index is even}
    <tr bgcolor='blue'>
    {else}
    <tr>
    {/if}
    <td>id={$user.id}--index={$user@index}--iteration={$user@iteration}</td>
    <td>{$user.username}</td>
    <td>{$user.email}</td>
    <td>{$user.addr}</td>
    </tr>
    {/foreach}
    {if $user@show}
    <tr><td colspan='4'>一共{$user@total}个用户</td></tr>
    {else}
    <tr><td colspan='4'>没有用户,请添加</td></tr>
    {/if}
    </table>
    <hr color='red'/>
    通过break终止循环
    {$arr=['a','b','c','d','e']}
    {foreach $arr as $val}
    {if $val=='c'}
    {break}
    {/if}
    {$val}
    {/foreach}

    通过continue跳过当次循环,进入下次循环
    {$arr=['a','b','c','d','e']}
    {foreach $arr as $val}
    {if $val=='c'}
    {continue}
    {/if}
    {$val}
    {/foreach}

    七:继承
    $smarty->display('extends:parent.html|child.html');

  • 相关阅读:
    mysql性能优化
    pymysql模块
    mysql数据表约束
    MySQL数据库
    IO模型
    8451
    8946531
    6783
    256213
    27822
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5224838.html
Copyright © 2011-2022 走看看