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的内置函数,可以自动以变量调节器的形式在模板里使用
MVC框架基本工作原理相关推荐
- python scrapy框架原理_Scrapy框架的工作原理是什么?
Scrapy框架的工作原理是什么? Scrapy架构 学习Scrapy框架,从理解它的架构开始.图1所示是Scrapy的架构图. 从图1可知,Scrapy框架主要包含以下组件: (1)Scrapy E ...
- php ci 框架 扩展缓存类,PHP CodeIgniter框架的工作原理研究
这篇文章主要介绍了PHP CodeIgniter框架的工作原理研究,本文首先分析了它的工作流程,然后总结了它的工作原理,需要的朋友可以参考下 CodeIgniter(以下简称CI,官网以及中国站)是一 ...
- Spring框架的工作原理
Spring框架是一个开源的Java平台,它为容易而快速的开发出耐用的Java应用程序提供了全面的基础设施.完成基础阶段的学习后,就会开始接触框架的知识,接下来就给大家简单讲解Spring框架的工作原 ...
- java ssh实现原理_SSH三大框架的工作原理及流程
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Hibernate工作原理及为什么要用? 原理 通过Configuration().configure();读取并解析hibernate.cfg.xml配 ...
- SSH框架笔记_SSH三大框架的工作原理及流程
Hibernate工作原理及为什么要用? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg ...
- SpringMVC→简介、MVC、SpringMVC工作原理、Maven搭建第一个SpringMVC、请求参数接收、重定向、文件上传、AJAX异步访问、请求参数接收绑定JSON、@注解及传参
MVC SpringMVC工作原理 Maven搭建第一个SpringMVC 目录结构 web.xml *-servlet.xml Controller请求处理类 跳转页面 Maven运行服务器项目 浏 ...
- Bootstrap框架网格系统工作原理
Bootstrap 框架的网格系统工作原理如下: 1 .数据行 (.row) 必须包含在容器( .container )中,以便为其赋予合适的对齐方式和内距 (padding) . 如: &l ...
- MVC设计模式及其工作原理
MVC模式介绍: MVC即模型Model.视图View.控制器Controller,用一种将业务逻辑.数据.视图分离的方式组织架构代码,通过分离关注点的方式来支持改进应用组织方式,其促成了业务数据M ...
- scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...
今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...
最新文章
- 工作失职的处理决定_工作失误处理决定
- github绑定自己的域名
- celery delay 没反应
- jQuery表单对象属性过滤选择器
- html页面源码_整合SpringMVC之错误处理底层原理及源码分析
- Oracle启用、禁用角色
- android touch事件坐标原点,Android – 捏缩放ontouch事件坐标
- RDS SQL Server - 专题分享 - 巧用执行计划缓存之Table Scan
- mysql中explain的详细解释
- 高中电子技术——电弧抑制电路
- 《Java从入门到放弃》框架入门篇:在MyEclipse中配置Mybatis框架
- 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY4
- 图片如何转PDF?这两种方法很好用
- 22.12.1打卡 漫步校园 记忆化搜索
- 一、Linux 教程-基础
- Laravel Excel(maatwebsite/excel )导入
- SpringBoot项目部署到Tomcat中的两种方式(jar和war)
- 如何学习硬件电路设计,给出详细方案
- 伪类选择器(vscode)
- 游戏辅助原理与制作02-植物大战僵尸01-阳光基址
热门文章
- 按位取反~用法及原理
- Mysql跨库跨表复制数据
- Dearpygui制作Linux上SSD测试工具集合
- 关于this.$XXXXXXX
- uniapp(js)处理过去时间对比现在时间的时间差如几分钟前,几小时前,几个月前(仿照cnode社区)
- poi 启用保护后取消_关于POI锁定保护Excel表格后的操作
- 社区发现算法-Community Detection-NormalizeCut/Louvain/NMF/LPA
- Vue 学习——表格列表数据显示百分号%、显示数字改为自定义内容、数据表头下拉、点击筛选数据
- Keystone基本命令
- 基于django+html+flask的英语词汇量估算工具设计与实现 文档+项目源码