ThinkPHP源码分析说课讲解.pptx

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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@’模型扩展

您可能关注的文档

文档评论(0)

youngyu0301 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档