- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Smarty基础
Smarty简介什么是Smarty模板引擎为什么要使用模板技术?场景:for($i=0;$i10;$i++){echo “tdfont color=’blue’”.$row[‘name’].”/font/td”;}以上这种写法存在弊端,既有html代码又有php代码,html代码由前台人员实现,php代码由后台人员实现,这个文件该由谁来写?场景:需求开发测试运行不满意修改运行不满意修改………解决方案:我们可以为用户开发N套模板,实现PHP程序与模板程序的绝对分离php程序模板程序 html程序例1:这个程序中html与php混编,不利于开发和维护例2:模板文件:php文件:运行结果:其实,模板技术的核心就是字符串替换使用面向对象编程将以上功能封到一个模板类中Template.class.phpPHP程序:Smarty介绍什么是Smartysmarty是一个基于PHP开发的PHP模板引擎。它提供了逻辑与外在内容的分离。Smarty的特点速度编译型缓存技术编译缓存静态页插件技术语句自由 if/elseif/else/endif实时更新小项目配置Smarty下载Smarty3.0,并解压Smarty2.0PHP4Smarty3.0PHP5解压之后的文件demo:案例libs:Smarty源程序将libs放入到项目中,也可以重命名为Smarty进入到Smarty目录下plugins:自定义插件目录(可以修改)sysplugins:系统插件目录(不能修改)debug.tpl :调试模板Smarty.class.php :Smarty程序的入口文件,一般包含这个文件即可SmartyBC.class.php :Smarty3.0在2.0基础上进行了修改,如果还想使用Smarty2.0里面的功能,那么引用这个文件快速入门程序运行结果:原理:在运行后,我们发现在当前项目文件夹下,自动产生一个新目录,里面有一个php文件,这个就是编译文件。Smarty程序在第一次加载某个模板后,会将产生的代码直接写入到这个编译文件中,为了避免以后每次加载模板所花费的系统IO开销。直接运行这个编译文件即可。编译是指对模板的编译。打开编译文件:在这里,会记录模板文件名称,和一个时间戳,用于记录模板文件最后修改时间。程序运行时,如果模板文件没有发生改变,直接运行编译文件程序运行时,如果模板文件发生改变,重新读取模板,重新编译,重新执行编译文件中还有这样几行:整个编译文件就是在程序运行第一次时自动创建的,将所有html代码直接写在编译文件里,将需要使用php变量的模板变量生成上面的格式,每次执行编译文件时,会通过smarty内部对象的转换将它具体的值输出。原理图:Smarty常用属性template_dir;表示模板文件所在路径这个属性的默认值:templates,如果没有找到,也可以在当前目录下去找。可以在项目中,创建templates文件夹,将所有模板放在这个目录下!为什么文件夹必须是templates?这个属性是受保护的,为什么可以直接使用?在Smarty构造函数__construct中,有这样一段代码,分别调用了smarty类下的设置路径等函数,使用./template/做为template_dir属性的默认值,所以会自动到这个目录下去加载模板。同理,其它几个属性的默认值就是下面定义的值。在Smarty类中有__set魔术方法,当我们为template_dir属性赋值时,由于它是受保护的不可访问的属性,所以自动调用__set方法,__set方法再去调用setTemplateDir方法。在smarty2.0中,以上几个属性都是var,所以直接可以访问在Smarty3.0中,将属性定义为protected的,但可以通过魔术方法进行访问,但3.0更推荐我们使用以下方法设置属性setTemplateDir();setCompileDir();setConfigDir();setCacheDir();获取属性:getTemplateDir();getCompileDir();getConfigDir();getCacheDir();我们写程序时,尽量使用以上方法对属性进行读取和设置compile_dir 编译文件所在目录config_dir配置文件所在目录cache_dir缓存文件所在目录分界符left_delimiter:左分界符right_delimiter:右分界符默认值:{} ,如果有特殊需要,重新设置这两个属性assign为模板变量赋值为模板变量$name赋值,值为$name的值为模板变量$age赋值,值为$age的值模板设计篇注释语法:*注释内容*smarty中的注释属于服务器端注释,不会显示在客户端浏览器中模板中的变量模板中的变量其实是由特殊语法构成的,前
文档评论(0)