MVC框架基本工作原理

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的内置函数,可以自动以变量调节器的形式在模板里使用

你可能感兴趣的:(php学习笔记)