PHP中使用Smarty模板目录结构配置
2015-05-20 14:26
513 查看
接触一个新东西,往往搭建最初始的环境最让人捉急。
在使用PHP模板Smarty过程中,如果不涉及自定义目录结构的话,按照下面的目录组织就可以直接使用了(前提是需要阅读以下用户手册)。
图上的每个目录都有了相应的说明,关于smarty的工作原理就是按照Smarty的语法规则编写模本文件,然后PHP脚本提供对应的数据,二者通过Smarty模板引擎最终输出可以展示的文件(包含格式+数据)。
如下图是Smarty最基本的工作原理,当然Smarty还提供更多强大的功能。
接下来就是一个Hello Smarty的体验了。
1.编一个提供数据的PHP文件(index.php)
2.编一个用户展示数据的模本文件index.tpl(注意模板文件要放置到templates文件夹中)
3.访问index.php
至此Smarty就可以工作了,但是关于Smarty的用法不是本文的重点,本文的重点是Smarty的目录结果配置。
为了说明Smarty的目录结构配置,先引入一个问题:目前的php文件都在工程根目录,实际应用中这样并不可取,这时候我们新建一个demo1.php放置到test目录下,看看会发生什么情况。
1. ./test/demo1.php代码如下:
注意:
模板文件不变
引入Smarty.class.php文件的路径发生变化。
打印模板目录信息(getTemplateDir())
2. 访问/test/demo1.php文件看看结果:
首先问题出在模板文件index.tpl找不到,其次打印出的模板目录是:'.\templates\'很显然当前test目录下并不存在template目录,这个时候该怎么办呢?
3.自定义目录结构
实际开发中目录结构自然不能因为某个框架或者组件变成死的,当然框架或组件的开发者一般都会提供最大限度的可扩展,可配置。
上面的问题产生的原因倒不是应为我们的test目录下没有templates目录,而是我们在使用Smarty的时候完全采用了默认的配置,这样做方便了使用,单不利于项目的组织和管理。
我们能够做的就是将Smarty的自定义配置分离出来,单独做一个文件,然后在使用到Smarty对象的地方直接引用即可。
3.1下面是一个简单的分离示例(smarty.config.php):
3.2 将smarty.config.php放置到工程的根目录,然后去掉$_smarty->testInstall()的注释,访问smarty.config.php看看有什么效果:
看到这么多Ok,就说明我们的Smarty目录结构配置成功了。
3.3接下来我们要使用smarty.config.php,在test目录下创建demo2.php:
注意:
包含smarty.config.php的路径
3.4 接下来访问tset/demo2.php看看什么效果:
看到这个结果和我们最开始的结果是一致的,这样我们就可以在项目中使用Smarty的时候不用关心Smarty的要求的目录结果是什么样子的了,当然并非一点都不关心,这个时候我们只需要维护smarty.config.php中的配置。
4.smarty.config.php配置的一点延伸
从3.1中smarty.config.php的配置代码中看,我们引入Smarty.class.php类的时候使用的绝对路径,这样做就可以保证项目中任何通过引入smarty.config.php文件来使用Smarty类能够正常加载。
做到这一步之后,接下来为了防止通过浏览器直接访问Smarty库以及它的依赖目录(cache, template, plugins, configs, templates_c),我们需要做点安全方面的工作,这个时候只需要吧Smarty库和它的依赖目录至于服务器文档根目录之外, 然后修改smart.config.php文件中的配置即可。
smarty3.7的目录结果如下图:
然后修改一下smarty.config.php中的配置即可,如下代码行。
注:如通过浏览器访问 http://localhost/smarty/smarty/Smarty.class.php; http://localhost/smarty/templates/index.tpl; 都是不安全的。
在使用PHP模板Smarty过程中,如果不涉及自定义目录结构的话,按照下面的目录组织就可以直接使用了(前提是需要阅读以下用户手册)。
图上的每个目录都有了相应的说明,关于smarty的工作原理就是按照Smarty的语法规则编写模本文件,然后PHP脚本提供对应的数据,二者通过Smarty模板引擎最终输出可以展示的文件(包含格式+数据)。
如下图是Smarty最基本的工作原理,当然Smarty还提供更多强大的功能。
接下来就是一个Hello Smarty的体验了。
1.编一个提供数据的PHP文件(index.php)
至此Smarty就可以工作了,但是关于Smarty的用法不是本文的重点,本文的重点是Smarty的目录结果配置。
为了说明Smarty的目录结构配置,先引入一个问题:目前的php文件都在工程根目录,实际应用中这样并不可取,这时候我们新建一个demo1.php放置到test目录下,看看会发生什么情况。
1. ./test/demo1.php代码如下:
模板文件不变
引入Smarty.class.php文件的路径发生变化。
打印模板目录信息(getTemplateDir())
2. 访问/test/demo1.php文件看看结果:
首先问题出在模板文件index.tpl找不到,其次打印出的模板目录是:'.\templates\'很显然当前test目录下并不存在template目录,这个时候该怎么办呢?
3.自定义目录结构
实际开发中目录结构自然不能因为某个框架或者组件变成死的,当然框架或组件的开发者一般都会提供最大限度的可扩展,可配置。
上面的问题产生的原因倒不是应为我们的test目录下没有templates目录,而是我们在使用Smarty的时候完全采用了默认的配置,这样做方便了使用,单不利于项目的组织和管理。
我们能够做的就是将Smarty的自定义配置分离出来,单独做一个文件,然后在使用到Smarty对象的地方直接引用即可。
3.1下面是一个简单的分离示例(smarty.config.php):
看到这么多Ok,就说明我们的Smarty目录结构配置成功了。
3.3接下来我们要使用smarty.config.php,在test目录下创建demo2.php:
包含smarty.config.php的路径
3.4 接下来访问tset/demo2.php看看什么效果:
看到这个结果和我们最开始的结果是一致的,这样我们就可以在项目中使用Smarty的时候不用关心Smarty的要求的目录结果是什么样子的了,当然并非一点都不关心,这个时候我们只需要维护smarty.config.php中的配置。
4.smarty.config.php配置的一点延伸
从3.1中smarty.config.php的配置代码中看,我们引入Smarty.class.php类的时候使用的绝对路径,这样做就可以保证项目中任何通过引入smarty.config.php文件来使用Smarty类能够正常加载。
做到这一步之后,接下来为了防止通过浏览器直接访问Smarty库以及它的依赖目录(cache, template, plugins, configs, templates_c),我们需要做点安全方面的工作,这个时候只需要吧Smarty库和它的依赖目录至于服务器文档根目录之外, 然后修改smart.config.php文件中的配置即可。
smarty3.7的目录结果如下图:
然后修改一下smarty.config.php中的配置即可,如下代码行。
相关文章推荐
- PHP中使用Smarty模板目录结构配置
- php学习笔记1 apache服务器使用及配置① 启动和停止 端口配置 apache的目录结构
- 韩顺平PHP学习视频笔记整理027apache服务器使用及配置② apache目录结构
- PHP 中使用 Smarty 之二:配置文件在模板变量中的使用
- PHP模板之Smarty安装与使用入门教程
- zend framework的Bootstrap.php 可以任意配置文件目录结构
- 【PHP】smarty模板中使用随机数
- PHP 中使用 Smarty 之初:认识 Smarty 模板引擎
- smarty模板文件中执行php代码 调用php函数的方法 使用对象等
- ubunut11.0安装nginx基本目录结构介绍和配置使用方法
- PHP模板之Smarty安装与使用入门教程
- debian Squeeze配置apache php mysql环境,debian中apache目录结构
- php模板之Phpbean的目录结构
- php模板之Phpbean的目录结构
- PHP中Smarty配置基本信息,供初学者使用,我也是个初学者
- PHP模板之Smarty安装与使用入门教程
- php $smarty 模板的控制结构 if-elseif-else
- 如何配置php的smarty模板的日志文章。
- PHP模板Smarty的初级使用方法及心得
- 【PHP】Smarty 模板引擎的使用总结