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

MVC框架基本工作原理相关推荐

  1. python scrapy框架原理_Scrapy框架的工作原理是什么?

    Scrapy框架的工作原理是什么? Scrapy架构 学习Scrapy框架,从理解它的架构开始.图1所示是Scrapy的架构图. 从图1可知,Scrapy框架主要包含以下组件: (1)Scrapy E ...

  2. php ci 框架 扩展缓存类,PHP CodeIgniter框架的工作原理研究

    这篇文章主要介绍了PHP CodeIgniter框架的工作原理研究,本文首先分析了它的工作流程,然后总结了它的工作原理,需要的朋友可以参考下 CodeIgniter(以下简称CI,官网以及中国站)是一 ...

  3. Spring框架的工作原理

    Spring框架是一个开源的Java平台,它为容易而快速的开发出耐用的Java应用程序提供了全面的基础设施.完成基础阶段的学习后,就会开始接触框架的知识,接下来就给大家简单讲解Spring框架的工作原 ...

  4. java ssh实现原理_SSH三大框架的工作原理及流程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Hibernate工作原理及为什么要用? 原理 通过Configuration().configure();读取并解析hibernate.cfg.xml配 ...

  5. SSH框架笔记_SSH三大框架的工作原理及流程

    Hibernate工作原理及为什么要用? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg ...

  6. SpringMVC→简介、MVC、SpringMVC工作原理、Maven搭建第一个SpringMVC、请求参数接收、重定向、文件上传、AJAX异步访问、请求参数接收绑定JSON、@注解及传参

    MVC SpringMVC工作原理 Maven搭建第一个SpringMVC 目录结构 web.xml *-servlet.xml Controller请求处理类 跳转页面 Maven运行服务器项目 浏 ...

  7. Bootstrap框架网格系统工作原理

    Bootstrap 框架的网格系统工作原理如下: 1 .数据行 (.row) 必须包含在容器( .container )中,以便为其赋予合适的对齐方式和内距 (padding) .     如: &l ...

  8. MVC设计模式及其工作原理

     MVC模式介绍: MVC即模型Model.视图View.控制器Controller,用一种将业务逻辑.数据.视图分离的方式组织架构代码,通过分离关注点的方式来支持改进应用组织方式,其促成了业务数据M ...

  9. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...

    今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...

最新文章

  1. 工作失职的处理决定_工作失误处理决定
  2. github绑定自己的域名
  3. celery delay 没反应
  4. jQuery表单对象属性过滤选择器
  5. html页面源码_整合SpringMVC之错误处理底层原理及源码分析
  6. Oracle启用、禁用角色
  7. android touch事件坐标原点,Android – 捏缩放ontouch事件坐标
  8. RDS SQL Server - 专题分享 - 巧用执行计划缓存之Table Scan
  9. mysql中explain的详细解释
  10. 高中电子技术——电弧抑制电路
  11. 《Java从入门到放弃》框架入门篇:在MyEclipse中配置Mybatis框架
  12. 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY4
  13. 图片如何转PDF?这两种方法很好用
  14. 22.12.1打卡 漫步校园 记忆化搜索
  15. 一、Linux 教程-基础
  16. Laravel Excel(maatwebsite/excel )导入
  17. SpringBoot项目部署到Tomcat中的两种方式(jar和war)
  18. 如何学习硬件电路设计,给出详细方案
  19. 伪类选择器(vscode)
  20. 游戏辅助原理与制作02-植物大战僵尸01-阳光基址

热门文章

  1. 按位取反~用法及原理
  2. Mysql跨库跨表复制数据
  3. Dearpygui制作Linux上SSD测试工具集合
  4. 关于this.$XXXXXXX
  5. uniapp(js)处理过去时间对比现在时间的时间差如几分钟前,几小时前,几个月前(仿照cnode社区)
  6. poi 启用保护后取消_关于POI锁定保护Excel表格后的操作
  7. 社区发现算法-Community Detection-NormalizeCut/Louvain/NMF/LPA
  8. Vue 学习——表格列表数据显示百分号%、显示数字改为自定义内容、数据表头下拉、点击筛选数据
  9. Keystone基本命令
  10. 基于django+html+flask的英语词汇量估算工具设计与实现 文档+项目源码