php smarty框架案例,PHP框架_Smarty

目录

1.环境搭建

文件夹目录

|--libs      Smarty核心文件

|--demo 开发目录

|--cache  缓存目录

|--template_c  模板编译生成目录

|--tpl  模板目录

|--*.php  php文件

2.基本配置

test.php

//引入smarty类

require("../lib/Smarty.class.php");

//实例化对象

$smarty = new Smarty();

//配置Smarty

$smarty->left_delimiter = "{"; //左定界符

$smarty->right_delimiter = "}"; //右定界符

$smarty->template_dir = "tpl"; //模板目录

$smarty->compile_dir = "template_c"; //模板编译生成目录

$smarty->cache_dir = "cache"; //缓存目录

/*Smarty的缓存机制通常不开启*/

//$smarty->caching = true; //开启缓存

//$smarty->cache_lifetime = 120; //缓存时间

//smarty两个基本方法

$smarty->assign('articleTitle',"fuck the sky"); //设置title变量,赋值

$smarty->display('test.html'); //在test.html模板中展示

3.Smarty变量调节器

{* 1.首字母大写capitalize*}

{$articleTitle|capitalize}

{* 2.字符串连接 cat*}

{$articleTitle|cat:" yesterday."}

{* 3.日期格式化 date_format*}

{$yesterday|date_format}

{* %H:时 %M:分 %S:秒 %Y:年 %B:月 %e:日 %A:星期 *}

{$yesterday|date_format:"%A, %Y %B %e %H:%M:%S"}

{* 4.为未赋值或为空的变量指定默认值default*}

{$articleTitle|default:"no title"}

{* 5.转码 escape*}

{*用于html转码,url转码。默认是html转码*}

{* 6.小写 lower 大写 upper*}

{* 7.所有的换行符将被替换成
nl2b*}

{{$articleTitle|nl2br}}

4.Smarty条件判断

{* eq(==) neq(!=)gt(>)lt(

{* 修饰词时必须和变量或常量用空格格开*}

{if $name eq "Ryan"}

Hello Boy.

{elseif $name eq "YY"}

NO.

{else}

Who

{/if}

5.Smarty的循环

test.php中定义$articlelist数组

$articlelist = array(

array(

"title" => "第一篇文章标题",

"author" =>"第一作者",

"content" =>"第一内容"

),

array(

"title" => "第二篇文章标题",

"author" =>"第二作者",

"content" =>"第二内容"

)

);

test.html中

{* section循环 *}

{* 1.start 循环执行的初始位置。如果该值为负数,开始位置从数组的尾部算起*}

{* 2 step 该值决定循环的步长。*}

{* 3.设定循环最大执行次数。*}

{* 4.show 决定是否显示该循环。*}

{section name=article loop=$articlelist}

{$articlelist[article].title}

{$articlelist[article].author}

{$articlelist[article].content}

{/section}

{* foreach循环 *}

{foreach $articlelist as $article}

{$article.title}

{$article.author}

{$article.content}

{foreachelse}

NULL

{/foreach}

6.Smarty模板的引用

{*include file="header.tpl" *}

7.Smarty类与对象的赋值与引用

test.php中定义myObject类

class myObject{

function meth1($params){

return $params[0]." ".$params[1];

}

}

$myObj = new myObject();

$smarty->assign("myObj",$myObj);

test.html

{$myObj->meth1(array("苹果","炸了"))}

8.smarty函数插件

{* function 函数插件 *}

{*创建Smarty插件:*}

{* 在插件目录里新建文件 类型.插件名.php文件*}

{* 插件方法名字书写规范: smarty_类型_插件名([...]){}*}

{* 调用方法:函数名 参数1=数值1 参数2=数值2 *}

{test width=150 height =2}

//function.test.php

function smarty_function_test($params){

$width = $params["width"];

$height = $params["height"];

return $width*$height;

}

{* modifiers 修饰插件 *}

{* 调用方法:第一个参数|函数名 其他参数 *}

{$yesterday|test:"Y-m-d h:i:s"}

//modifier.test.php

function smarty_modifier_test($utime,$format){

return date($format,$utime);

}

{* block functions 区块函数插件 *}

{test2 replace="true" maxnum=10}

{$str}

{/test2}

//block.test2.php

function smarty_block_test2($params,$content){

$replace = $params["replace"];

$maxnum = $params["maxnum"];

if($replace == "true"){

$content = str_replace(",",".",$content);

}

$content = substr($content,0,$maxnum);

return $content;

}

避免重复造轮子的UI自动化测试框架开发

一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...

ABP入门系列(1)——学习Abp框架之实操演练

作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

旺财速啃H5框架之Bootstrap(五)

在上一篇<>做了基本的框架,<>篇里也大体认识了bootst ...

Angular企业级开发(5)-项目框架搭建

1.AngularJS Seed项目目录结构 AngularJS官方网站提供了一个angular-phonecat项目,另外一个就是Angular-Seed项目.所以大多数团队会基于Angular-S ...

Scrapy框架爬虫初探——中关村在线手机参数数据爬取

关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...

制作类似ThinkPHP框架中的PATHINFO模式功能

一.PATHINFO功能简述 搞PHP的都知道ThinkPHP是一个免费开源的轻量级PHP框架,虽说轻量但它的功能却很强大.这也是我接触学习的第一个框架.TP框架中的URL默认模式即是PathInfo ...

旺财速啃H5框架之Bootstrap(四)

上一篇<>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

一起学 Java(三) 集合框架、数据结构、泛型

一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

Hibernatel框架关联映射

Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

随机推荐

Leetcode 102 Binary Tree Level Order Traversal 二叉树+BFS

二叉树的层次遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...

js 获取 input file 文件 附给 image src

var a=document.querySelector('input[type=file]'); a.onchange = function (e) { //var reader = new Fil ...

Python Django manage.py提供的命令及用法

λpython manage.pyType'manage.py help 'for help on a specific subcommand. Available ...

mysql的having语句

mysql> use qq; Database changed mysql> #查询本店价比市场价省的钱,并且要求省钱200元以上的取出来 mysql> select goods_i ...

文件操作-php

PHP的优点

1.语法简单 2.学习成本低 3.开发效率高 4.跨平台 5.开发部署方便 6.开源框架非常丰富(如:ThinkPHP) 7.开源CMS系统非常丰富(如:Joomla,Wordpress) 8.开源网 ...

Python_方法演示

class Root: __total=0 def __init__(self,v): #构造函数 self.__value=v Root.__total+=1 def show(self): #普通 ...

RHEL7 timedatectl命令

1.要显示系统的当前时间和日期,使用timedatectl命令,如下: [root@rhel7 ~]# timedatectl Local time: Mon -- :: EDT Universal ...

java面试题------40个Java集合面试问题和答案

Java集合框架为Java编程语言的基础,也是Java面试中非常重要的一个知识点. 这里,我列出了一些关于Java集合的重要问题和答案. 1.Java集合框架是什么?说出一些集合框架的长处? 每种编程 ...

JsonConvert.DeserializeAnonymousType

string JsApiTicketString = string.Empty; using (StreamReader reader = new StreamReader(response.GetR ...

你可能感兴趣的:(php,smarty框架案例)