面试题之smarty模板引擎
1. 编译和缓存区别?
smarty的编译过程就是把模板拿过来,把里面的标签替换成相应php代码,这就是smarty的编译, 其实就是php和html混合的过程
smarty的缓存需要手动开启,smarty的缓存就是把编译好的文件执行后,同时生成一份静态的html页面,再次访问的时候,你访问的就是是html文件了,所以就效率来说,要高一些
2.什么是smarty? Smarty的优点是什么?
Smarty是一个使用PHP写出来的PHP模板引擎,目的是要使用PHP程序同美工分离,使的程序员改变程序的逻辑内容时不会影响到美工的页面设计,美工重新修改页面时不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。(也易于程序的多样式开发)
Smarty优点
1. 速度快:相对其他模板引擎。
2. 编译型:采用smarty编写的程序在运行时要编译成一个非模板技术的PHP文件
3 缓存技术:它可以将用户最终看到的HTML文件缓存成一个静态的HTML页
4. 插件技术:smarty可以自定义插件。
不适合使用smarty的地方
1. 需要实时更新的内容。例如像股票显示,它需要经常对数据进行更新 2.小项目。小项目因为项目简单而美工与程序员兼于一人的项目
3.在模板中使用{$smarty}保留变量
{$smarty.get.page} //类似在php脚本中访问$_GET[page]
{smarty.cookies.}
{smarty.post.}
{smarty.session.}
{smarty.server.}
4.在模板中访问php中的变量
在php脚本中有系统常量和自定义常量两种,同样这两种常量在Smarty模板中也可以被访问,而且不需要从php中分配,只要通过{$smarty}保留变量就可以直接输出常量的值。在模板中输出常量的示例:
{$smarty.const._MY_CONST_VAL}
{$smarty.const.__FILE__}
5.变量调解器
{$var|modifier1|modifier2|........}
<{$str}>
<{$str|capitalize}><{*首字母大写*}>
<{$str|upper}><{*全部大写*}>
<{$str|lower}><{*全部小写*}>
<{$str|lower|upper}><{*全部大写,调节从左至右*}>
<{$leg|truncate}><{*字符串截取,默认80个字符*}>
<{$leg|truncate:10}><{*字符串截取,前10个,包括...三个字符*}>
6. php查询mysql数据库时,查询中文结果时出现的乱码。怎么解决????
1.文件属性(另存为)
2.文件meta(设置浏览器解析的时候)
3. 连接数据库时编码设定
4. PHP文件中使用header函数确定编码
7.缓存机制
如果开启了缓存,smarty同时生成一份静态的html页面,如果在设定的时间没有过期,再次访问的时候,你访问的就是是html文件了,减少了读取数据库,所以就效率来说,要高一些。
8. smarty的赋值和载入模板
$Smarty->assign(name,value)
$Smarty->display(‘index.html’)
9.marty模板技术的用途是什么?
为了php与html分开,美工和程序员各司其职,互不干扰。
10. smarty配置主要有哪几项?
1. 引入smarty.class.php;
2. 实例化smarty对象;
3. 重新修改默认的模板路径;
4. 重新修改默认的编译后文件的路径;
5. 重新修改默认的配置文件的路径;
6. 重新修改默认的cache的路径。
7. 可以设置是否开启cache。
8. 可以设置左侧和右侧定界符。
11. smarty在使用过程中需要注意哪些细节?
Smarty是基于MVC概念的一种模板引擎,它将一个页面程序分成了两部分来实现:即视图层和控制层,
也就是说smarty技术将用户UI与php代码分离开。
这样程序员和美工各司其职,互不干扰。
12. smarty运用过程中要注意以下几个问题:
1.正确配置smarty。主要要实例化smarty对象,配置smarty模板文件的路径;
2.php页面中使用assign赋值 和display显示页面;
3.smarty模板文件中不允许出现php代码段,所有的注释,变量,函数都要包含在定界符内。
A.{}
B. foreach
C. if else
D. include
E. Literal