零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

  • 时间:2018-07-25 23:17 作者:技术学派 来源:技术学派 阅读:267
  • 扫一扫,手机访问
摘要:最近有不少小伙伴私信小编要Smarty的学习资料,今天技术学派就把Smarty相关的课堂讲义整理给小伙伴们,希望对小伙伴们在学习上有所帮助。在实际的开发中,公司都是分工明确的,PHP程序员主要负责PHP代码也就是业务逻辑相关的部分,Web前台程序员主要负责的是HTML、CSS、JavaScript也

最近有不少小伙伴私信小编要Smarty的学习资料,今天技术学派就把Smarty相关的课堂讲义整理给小伙伴们,希望对小伙伴们在学习上有所帮助。

在实际的开发中,公司都是分工明确的,PHP程序员主要负责PHP代码也就是业务逻辑相关的部分,Web前台程序员主要负责的是HTML、CSS、JavaScript也就是让页面更加美观使用户体验更好的部分,模板引擎就起到了模板(界面)与业务逻辑代码相分离的一种处理方案。

模板引擎原理示用意:

Html页面先用占位符代替,而后模板引擎再从PHP文件读取真实数据,并最终生成一个编译文件,用真实数据替换占位符

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

目前模板引擎技术有很多,Laravel框架(blade模板引擎)、ThinkPHP框架(自己的模板引擎技术),这里说一下Smarty,Smarty的简单详情

一、过程化及框架开发比照

过程化开发由于是所有的代码HTML和PHP混排,功能更新会导致代码越来越臃肿很不方便,而且开发速度慢,但是,由于不需要像框架开发那样加载大批量的拓展类库,所以运行速度相对较快。

框架开发由于是采使用特殊编程模式所以让我们更容易管理PHP代码和HTML代码。并且,各司其职,后端人员写后端功能;前台人员写前台效果,最后项目合并就可,所以开发速度很快。但是,由于需要加载第三方类库以及各种配置信息,所以运行效率会有所下降。

二、学习Smarty前的准备

由于在学习Smarty的时候,会用到少量概念性的新内容,因而我们需要补充少量知识点。

1. 类型束缚

主要针对于函数和类当中的成员方法,没有被束缚的类时可以传递任何类型的信息到函数及方法中的

  • 根据PHP版本的不同,能够束缚的数据类型也各不相同:

版本可束缚类型5.6及以下字符串、浮点型、数组型、对象型7.0及以上字符串、整型、浮点型、布尔型、数组型、对象型

2. 对象遍历

foreach除了可以遍历数组,也可以实现对象的遍历,它可以对对象中的公有成员属性进行遍历。

//定义一个类

class Meinv

{

public $name = '女神';

public $sex = '女';

public $age = '18';

}

?

//实例化对象

$gao = new Meinv();

?

//遍历该对象

foreach($gao as $k=>$v){

echo $k.'=>'.$v.'
';

}

?

//输出结果

name=>女神

sex=>女

age=>18

3. 常使用函数

在后续的文章中少量会使用到的函数,我们提前整理成一个表供大家参考。

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

4. 魔术常量

PHP的自己设置异常解决会应使用到如下的几个魔术常量

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

5. 异常解决

PHP已经为我们准备了两个可以使用于代码遇到异常时终止程序并提醒错误信息的方法,它们分别为die和exit,但是这两种方法提醒的异常信息过于简陋,而且无法实现一场信息的存储,因而PHP为我们准备了自己设置异常解决类!Exception!

//语法格式

try{

//这里要尝试做一件事儿

if(...){

//若要抛出异常,可以用如下语句

throw new Exception('错误信息','错误编号');

}

}catch(catch $e){ //这里做的错误信息的捕获

$e->getMessage(); //获取异常错误信息

$e->getCode(); //获取异常编号信息

$e->getFile(); //获取异常文件路径

$e->getLine(); //获取异常代码行号

}

三、更实使用的数据库操作类 PDO

之前我们学习过MySQL数据库操作,用了mysqli这一套数据库解决函数,尽管可以完成基本用,但却有美中不足。PDO的出现可以帮我们完成跨数据库、支持SQL语句预解决及事务解决等功能。

PDO全称:php data object (php的数据库笼统层)

1. PDO的特点

  • 跨数据库
  • 支持预解决
  • 支持事务解决

2. PDO的配置方式

  • phpinfo查看pdo板块能否开启
  • 在 wamp/bin/php/php7.0.10/ext 目录下查看能否拥有 php_pdo_mysql.dll 板块
  • 在 php.ini 中搜索 extension=php_pdo_mysql.dll 能否开启(去掉前面的分号就可)
  • 重启服务器

3. PDO的三种用方式

3.1 基本用

  • 实例化PDO
  • 发送SQL指令
  • 解决返回结果

3.2 预解决用

  • 实例化对象
  • 发送预解决指令
  • 绑定参数
  • 执行发送
  • 解决结果

3.3 事务解决用

  • 确保表存储引擎为:innodb
  • 修改表存储引擎:alter table 表名 engine=Innodb
  • 开启事务解决:$pdo->beginTransaction()
  • 事务回滚解决:$pdo->rollBack()
  • 事物提交操作:$pdo->commit()

四、Smarty 模板引擎原理

在学习Smarty之前,还有最后的一部分内容需要我们准备一下,那就是模板引擎概念的剖析,下面的案例,我们将会把模板引擎的原理拆开揉碎讲解给大家,只有掌握模板引擎原理,才能在后续的Smarty、ThinkPHP及Laravel的用中显得更加得心应手。

1. HTML&PHP 原生写法

就是将HTML和PHP写在一块的方法,这种写法解析速度快,却不易更新,因而现在很少会有公司用原生写法搭建项目

2. 模板引擎写法

有了模板引擎之后,我们即可以让HTML和PHP各司其职了!HTML只负责显示内容,PHP只负责业务逻辑

五、Smarty模板引擎

通过上面的学习,大家已经掌握了模板引擎的用原理,下面,我们即可以轻松的来用Smarty模板引擎来实现少量基本用了

1. 定义

Smarty模版引擎是一个开源引擎,是为了使使用户界面(HTML)与业务数据(PHP)分离而产生的,它可以生成特定格式的文档,使用于网站的模版引擎就会生成一个标准的HTML文档。直接在 http://www.smarty.net 官网进行下载就可

2. 功能

  • HTML和PHP代码分离
  • 实现代码编译与静态缓存

3. 用步骤

  • 引入Smarty类文件
  • 实例化Smarty类
  • 初始化参数
  • 分配变量
  • 解析模板

3.1 引入Smarty类文件

  • 需要将Libs目录中的Smarty.class.php文件引入
  • include "./Libs/Smarty.php";

3.2 实例化Smarty类

  • $s = new Smarty;

3.3 初始化参数

这里初始化的参数的作使用是为了我们后续模板引擎用的少量设置,包含了诸如:模板文件存储位置、编译缓存文件存储位置、配置文件存储位置等设置内容。

//设置模板文件存储目录

$s->template_dir = './Views';

?

//设置编译缓存文件存储目录

$s->compile_dir = './Views_c';

?

//设置配置文件存储目录

$s->config_dir = './config';

?

//设置左定界符

$s->left_delimiter = '<{';

?

//设置右定界符

$s->right_delimiter = '}>';

?

//能否开启静态缓存

$s->caching = true;

?

//设置静态缓存存储目录

$s->cache_dir = './cache';

?

//设置静态缓存生存升级时间(单位:秒)

$s->cache_lifetime = 5;

3.4 分配变量

这里分配的变量,就是模板文件中要进行用的模板变量

//压入信息

$s->assign('title','smarty的基本用');

$s->assign('version','3.1.18');

$s->assign('time',time());

$s->assign('chifan',true); //显示1,false为空字符串

$s->assign('pie',3.1415926); //浮点

$s->assign('active',['睡觉','敲代码','吃饭','上网']);

3.5 解析模板

这里的解析模板和我们自己设置 MySmarty 中的display方法用时一致的。

//将信息解析到模板上

$s->display('1.html');

下面为模板文件内容

{$title}

当前的版本:{$version}

当前的时间戳:{$time}

您吃饭了吗:{$chifan}

π:{$pie}

活动:{$active[0]}----{$active[1]----{$active[2]}}
//用方式同数组一致

4. 分配变量

本节要详细来看一下Smarty可以分配的变量有哪些内容

4.1 普通变量

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

4.2 超全局变量

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

4.3 保留变量

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

5. 解析模板

本节主要来理解在模板当中,我们可以用那些技巧,输出那些内容。

零基础入门PHP必学的Smarty模板引擎学习路线,理解一下?

6. 内置函数

本节向大家展现内置函数的用方式,常使用的有if分支、for循环、foreach遍历

6.1 for循环

//简单的{for}循环

    {for $foo=1 to 3 step 2}

  • {$foo}
  • {/for}

上例输出:

  • 1
  • 2
  • 3

6.2 foreach遍历

//{foreach}循环的简单例子

$arr = array('red', 'green', 'blue');

$smarty->assign('myColors', $arr);

模板在无序li中输出$myColors

    {foreach $myColors as $color}

  • {$color}
  • {/foreach}

?

上例输出:

  • red
  • green
  • blue

6.3 if分支

{* 同上 *}

{if $name == 'Fred' || $name == 'Wilma'}

...

{/if}

?

{* 允许用圆括号 *}

{if ( $amount < 0 or $amount > 1000 ) and $volume >= #minVolAmt#}

...

{/if}

{* 可以嵌入函数 *}

{if count($var) gt 0}

...

{/if}

{* 数组检查 *}

{if is_array($foo) }

.....

{/if}

{* 能否空值检查 *}

{if isset($foo) }

.....

{/if}

为了帮助小伙伴们更好的学习PHP Smarty ,技术学派整理了Smarty的相关demo源码及学习路线图,免费发给大家。

领取方式

关注“技术学派”后,评论转发文章,私信回复:Smarty

  • 全部评论(0)
最新发布的资讯信息
【网页前端|JS】五年Java程序员该掌握的技术点,这些都不懂,还想拿高薪吗?(2019-04-24 22:19)
【系统环境|】2019蚂蚁金服面试总结(Java方向)(2019-04-18 16:19)
【系统环境|】notepad++ 三位数字正则替换规则(2019-04-12 23:02)
【系统环境|服务器应用】网络工程师跨交换机的Vlan配置与管理知识(2019-03-26 02:14)
【系统环境|服务器应用】最小化的定制版linux系统:CoreOS(2019-03-26 02:14)
【系统环境|服务器应用】分布式系统面试题:分布式事务处理方案?(2019-03-26 02:13)
【系统环境|服务器应用】带着网关去旅行(系列二):防止vps上ssh端口被恶意扫描(2019-03-26 02:13)
【系统环境|服务器应用】美团iOS面试总结(2019-03-26 02:13)
【系统环境|服务器应用】百度iOS面试总结(2019-03-26 02:13)
【系统环境|服务器应用】Java大佬之学习历程(三)(2019-03-26 02:13)
手机二维码手机访问领取大礼包
返回顶部