MVC工作原理
MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。
- Model 模型层,一般对数据的处理,业务逻辑都会放在model进行处理
- View 视图层,渲染html页面,展示给用户
- Controller 控制器层,调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性
常见的MVC框架
- Yaf框架:使用PHP扩展形式写的一个PHP框架。优点:性能高,轻量。缺点:功能单一,缺少大量功能。
- ThinkPHP:国产框架,性能好、比较轻量、有大量的中文文档、提供丰富的功能,适合中、小型项目开发。
- Laravel框架,重量级框架,提供非常丰富的功能和第三方扩展,适合大型项目开发。
单一入口的工作原理
用一个处理程序文件处理所有HTTP请求,根据请求时的参数的不同区分不同模块和操作请求。
- 可以进行统一的安全性检查
- 集中处理程序
- URL过长(URL重新)
- 处理效率低
模板引擎的理解
- php是一种HTML内嵌的在服务端执行的脚本语言,但是PHP有很多可以使PHP代码和HTML代码分开的模板引擎例如Smarty。
- 模板引擎就是庞大的正则表达式替换库
Smarty模板引擎的使用
- 下载 Smarty https://www.smarty.net/download
- 引用并且实例化Smarty
require_once 'smarty-3.1.33/libs/Smarty.class.php';
$smarty = new Smarty();
- 五配置两方法
$smarty->left_delimiter = "{"; //模板左定界符号
$smarty->right_delimiter = "}"; //模板右定界符
$smarty->setTemplateDir("tpl"); //模板存放目录
$smarty->setCompileDir("compile_c"); //模板编译后生成的php文件存放目录,下次使用相同模板时,不需要重新编译,直接运行之前编译好的模板
$smarty->setCacheDir("cache"); //保存编译的php运行后生成的html页面,
$smarty->setCacheLifetime(120); //缓存的html页面的有效时间
$smarty->setCaching(true); //是否开启html缓存
$smarty->assign("var_name",$var); //绑定变量到模板
$smarty->display("tpl_name"); //渲染模板
- 基本语法
注释{* <注释内容> *}
变量输出{$<变量名>} - 变量调节器,类似将变量传递给调节器函数进行处理,得到一个新值,多个参数用:隔开
{$var|<调节器>}
内置调节器
capitalize首字母大写
cat字符串链接
default当变量为空时指定默认值 - 条件判断
基本语式
{if $name eq "Fred"}
Welcome Sir.
{elseif $name eq "Wiilma"}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}
常见的条件修饰符,eq(==), neq(!=), gt(>), lt(<)
- 循环语句
基本语式
{foreach item=value from=$array}
{$value.var_1}
{$value.var_2}
{$value.var_3}
{foreachelse}
.....
{/foreach}
item 相当于 php foreach as 后面的 变量
from 是需要循环的数组
当数组为空时显示foreachelse的内容
- smarty的文件引入
{include file="path/to/somefile" var1="var" var2="var" ...}
file需要引入模板的路径名
var1,var2…自定义传递给引入模板的变量名
- 类与对象的使用
{$obj->method()}
{$obj->var} - 函数的使用
可以使用PHP内置的函数
{"Y-m-d H:i:s"|date:timestamp}
可以使用自定义函数
function func(params){
......
}
$smarty->registerPlugin('function','reg_func_name','func_name');
{reg_func_name p1="v1" p2="v2" ...}
reg_func_name是注册到smarty的函数名
func_name需要注册的函数名
在使用函数时 p1,p2 …会被打包成一个数组传递到函数的$params中
- 自定义插件的使用
常用插件类型
functions函数插件
modifiers修饰插件
block functions 区块函数插件
使用registerPlugin方法注册写好的自定义函数
将写好的插件放入Smarty解压目录中的lib目录下的plugin目录里
PHP的内置函数,可以自动以变量调节器的形式在模板里使用