- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ThinkPHP源码分析 ?目录 一,MVC分层理论 如何学习理论知识? 怎么做分层架构(正交性) 二,ThinkPHP中的MVC(源码分析) 各部分的功能、UML类图、源码 设计思路:类要有专职、善于用委托 三,分析代码的方法第一部分:MVC分层理论如何学习理论知识?OOP面向对象编程为了解决什么问题?OOP面向对象编程为了解决什么问题?让抽象的编程形象化,增强代码可读性。MVC为了解决什么问题?MVC为了解决什么问题?为了解决混编时改变网站风格会影响业务逻辑代码的问题。MVC是一种分层架构正交按流程分层现实生活中的分层例子老板包工头工人们OSI分层应用层表现层会话层传输层网络层数据链路层物理层MVC分层模型(M)控制器(C)视图(V)分层中的黑板分层1黑板分层2分层3分层的特点:正交按流程分层1,每一层仅和自己相邻的上下两层有关系(正交性)2,按执行流程分层,而不是按业务逻辑分层 图片系统用户系统文章系统获得请求参数操作数据库显示界面分层的评估标准修改发生在固定的层。新增功能可以发生在各个层。很多分层模型能减少修改的工作量不能减少新增的功能的工作量分层的好处:1,可分工前端和后端2,易测试单元测试:Model可以单独测试,和界面无关。3,易修改把视图由输出HTML改为输出JSON第二部分:ThinkPHP中的MVC 各部分的功能、UML类图、源码 设计思路:类要有专职、善于用委托控制器(Controller)前端控制器(App.class.php)应用控制器(Controller.class.php)单一入口参数绑定路由跳转/重定向:success,error自动加载简单说说自动加载和接管异常报错如何实现的?自动加载的实现手册的截图ThinkPHP/Library/Think/Think.class.php $class=Org\Util\File报错和异常的接管ThinkPHP的报错:默认的报错:ThinkPHP/Library/Think/Think.class.php 可用接管报错报警App::run 干了什么?App::run中分别指向了App::init, App::exec.App:init() 路由分析 , 委托给Dispatcaher类实现App:exec() 调用controller文件类的职责: App:调用Controller Dispatcher:分析路由使用委托,让类的职责更加明显路由解析的实现URL: controller/action/username/luofei614/id/123参数: $_GET[‘username’], $_GET[‘id’]①分隔为数组:$paths= explode(‘/’,’ controller/action/username/luofei614/id/123’)②弹出数组的第一个值为Controller③弹出数组的第二个值为Action④分析剩余参数username/luofei614/id/123$var=array(‘username’=’luofei614’,’id’=’123’)参数绑定的实现参数绑定的功能手册中的例子:参数绑定的代码实现:ThinkPHP/Library/Think/App.class.php 文件exec方法中:方法的反射类的反射模型(Model)数据库的CURD操作ORM模型(将数据映射到对象上)数据库驱动连贯操作自动完成令牌验证自动验证字段映射类的职责:Model:封装了通用的业务逻辑 , Db:数据库操作委托后可扩展性更强设计模式:策略模式 自动验证、自动完成、字段映射、令牌验证模型基类:ThinkPHP/Library/Think/Model.class.php自动验证不生效?自动完成不生效?看看你有没有调用create If(!$model-create($data)){ $this-error($model-getError())}$model-save();If(!$model-save($data)){ $this-error($model-getError());}连贯操作怎么实现的?模型基类:ThinkPHP/Library/Think/Model.class.php连贯操作:$model-where($where)-limit(“0,1”)-select()返回的是 $thisORM怎么实现的?ORM的功能:手册中的截图Model中真的有name和email属性吗?模型基类:ThinkPHP/Library/Think/Model.class.php$this-email=‘ThinkPHP@’$this-data[‘email’]=‘ThinkPHP@’模型扩展
您可能关注的文档
- 渣浆泵基础知识学习资料.ppt
- 漳州市商务惠企政策宣讲材料课件说课讲解.ppt
- 涨停板股票交易策略与方法教学教材.ppt
- 整合研发和运营把握中国网游市场的脉搏教学提纲.ppt
- 智能时代移动电商的投资机会教学内容.ppt
- 中等职业学校学生管理系统教学文案.ppt
- 中国交互式资讯及教育领导品牌讲解材料.ppt
- 中国梦-世界情大型演唱会备课讲稿.ppt
- 中小学德育问题与对策备课讲稿.ppt
- 专题2 从海水中获得的化学物质溴碘的提取教学提纲.ppt
- 人教新目标版英语九年级 中考模拟学情评估(三)(含答案).pdf
- 上海市风华中学2024-2025学年高三上学期9月阶段测试英语试题(无答案).pdf
- 统编版2024-2025学年语文六年级上册期末检测卷(有答案).pdf
- 人教新目标版英语九年级第二学期全册学情评估(含答案).pdf
- 内蒙古自治区巴彦淖尔市杭锦后旗第六中学2024-2025学年八年级上学期阶段性测试历史试题(解析版).pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版无答案.pdf
- 湖南省衡阳市常宁市2023-2024学年七年级上学期期末考试英语试题.pdf
- 湖南省娄底市涟源市部分学校2024-2025学年高一上学期9月月考语文试题 Word版含解析.pdf
- 江苏省泰州市姜堰区城西实验学校2024-2025学年部编版九年级上学期月考历史试卷(原卷版).pdf
- 内蒙古伊金霍洛旗2022-2023学年七年级上学期期末考试英语试题.pdf
最近下载
- 中职《幼儿心理学》课程教学课件-项目二任务3 感知觉规律的运用.pptx VIP
- Hasselblad哈苏H6中文说明书.pdf
- (人教2024版)一年级数学上册《数学游戏》单元复习讲义.docx
- 木材人造板制造工艺考核试卷.docx VIP
- 百家争鸣(共张PPT)-PPT课件模版[1].pptx
- 《无障碍设施施工验收及维护规范》(GB50642—2011)的解读.pdf VIP
- 13_一等奖丨清华大学丨“三位一体,三创融合,开放共享”创新创业教育体系和平台的创建(20220427推文).pdf VIP
- 百得两用燃烧机TBML 1200 ME电子控制器调试安装说明书.pdf
- 磁共振成像原理与临床应用完整版.ppt VIP
- 人教2024版英语七年级上册Starter Unit 1- Unit 3基础知识练习(含答案).docx VIP
文档评论(0)