欢迎光临
我们一直在努力

面试题之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}><br>

<{$str|capitalize}><{*首字母大写*}><br>

<{$str|upper}><{*全部大写*}><br>

<{$str|lower}><{*全部小写*}><br>

<{$str|lower|upper}><{*全部大写,调节从左至右*}><br>

<{$leg|truncate}><{*字符串截取,默认80个字符*}><br>

<{$leg|truncate:10}><{*字符串截取,前10个,包括…三个字符*}><br>

 

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

分享到:更多 ()