做了那么久PHP开发,开始尝试去做一个简单的mvc框架。
一、首先确定目录结构
由于不太想弄得太复杂的结构,因此,将所有的目录存放于libs中,项目根目录只留一个index.php以及config.php,形成一个类似于thinkPHP的单一入口模式。
libs中目录结构为Controller(控制器),Model(模型),View(视图),ORG(第三方类库)
单一入口模式的优点:
1.可以在入口文件中完成一系列所有文件都要进行的一些相同操作,例如安全性检查,数据安全拦截,特殊字符过滤,数据统计等多种功能
2.在单一入口模式可以使整个项目看上去更规整,更易于日后的维护
3.单一入口模式更易于拦截非法请求
同时单一入口模式也存在一些缺陷,例如url不美观等问题
二、视图引擎的选择
好的视图引擎:
1.基于该引擎开发出的视图模板更贴近标准的html等
2.语法简单易懂
3.良好的缓存机制
4.扩展性能好
5.网络资源多(其实就是有问题能度娘的到,发帖能有一堆人顶!d=====( ̄▽ ̄*)b)
基于上述种种原因,lz选择了smarty模板引擎,不为啥,任性!(主要还是因为我最常用的就是介个==、),在lz的纠结之下,终于选择了smarty-3.1.29版本
三、模板引擎引入、配置
1.smarty获取
将smarty中libs文件夹下的smarty引擎的核心文件复制到ORG中
2.smarty目录说明
/Smarty.class.php #smarty引擎的主文件
/sysplugins #smarty引擎的内部plugin
/plugins #smarty引擎的外部plugin,可自由扩充
/SmartyBC.class.php #用于增强smarty引擎的上下兼容能力
3.引入smarty
在smarty同级目录下创建一个test目录用作引入,同时在test目录下创建test.php文件,通过test文件进行smarty的引入测试以及练习。
test.php中通过以下代码进行smarty引擎的引入
<?php
require('../smarty/Smarty.class.php');
$smarty=new Smarty();
?>
4.smarty的配置
smarty引擎主要配置以下几个配置项
1.左右界定符 :left_delimiter,right_delimiter
2.html模板存放目录:template_dir
3.编译文件存放目录:compile_dir
4.缓存目录:cache_dir
5.开启缓存:caching(非必要)
6.缓存时间:cache_lifetime(非必要)
相应代码如下:
<?php
require('../smarty/Smarty.class.php');//引入smarty核心文件
$smarty=new Smarty();//实例化smarty类
$smarty->left_delimiter="{";//左界定符
$smarty->right_delimiter="}";//右界定符
$smarty->template_dir="../../Tpl";//html模板的存放位置
$smarty->compile_dir="../../template_c";//编译生成的文件
// $smarty->cache_dir="../cache";//缓存
//以下是开启缓存的配置
//$smarty->caching=true;//开启缓存
//$smarty->cache_lifetime=120;//缓存时间
?>
5.使用smarty引擎
通过实例化smarty变量调用assign以及display方法即可。
assign方法是传递参数方法
display方法是展示模板方法 代码如下
<?php
require('../smarty/Smarty.class.php');
$smarty=new Smarty();
$smarty->left_delimiter="{";//左界定符
$smarty->right_delimiter="}";//右界定符
$smarty->template_dir="../../Tpl";//html模板的存放位置
$smarty->compile_dir="../../template_c";//编译生成的文件
// $smarty->cache_dir="../cache";//缓存
//以下是开启缓存的配置
//$smarty->caching=true;//开启缓存
//$smarty->cache_lifetime=120;//缓存时间
$smarty->assign('title','文章标题');
$smarty->display('test.tpl');
?>
在之前配置的模板存放位置中创建test模板文件即可进行测试是否引入成功
刚换工作,暂时暂停更新==、
来源:oschina
链接:https://my.oschina.net/u/1988645/blog/630427