- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ThinkPHP5.0特性解读摘要
ThinkPHP5.0特性解读 ThinkPHP 简介 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级 PHP开发框架,遵循Apache2开源协议发布,是为了敏捷 WEB应用开发和简化企业级应用开发而诞生的。拥有众多的优秀功能和特性,经历了9年多发展的同时,在社区团队的积极参与下,在易用性、扩展性和性能方面 不断优化和改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式。? ? ? ? ThinkPHP5.0版本是一个颠覆和重构版本,基于PHP5.4设计(支持PHP7),采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载. [ 底层架构 ] 真正的惰性加载 核心类库组件化 完美路由设计 框架引导文件 采用Traits扩展 API友好 文件命名规范调整 Composer自动加载支持 Console模式 [ 路由 ] 动态注册路由规则 支持路由到任意类的方法 域名绑定 资源路由支持 自定义路由检测方法 路由前后置行为 路由分组 变量规则(包括全局和局部) 闭包支持 URL生成支持路由解析反转 支持路由到多层控制器 [ 调试和异常 ] 专为API开发而设计的输出、调试和异常处理 SocketLog整合实现远程浏览器插件调试 内置trace方法直接远程调试 数据库SQL性能分析支持 [ 控制器 ] 控制器类无需继承controller类 灵活的多层控制器支持 可以Traits引入高级控制器功能 控制器rest/yar/rpc/hprose/jsonrpc扩展 前置操作方法支持排除和指定操作 控制器操作方法统一return设计 [ 模型 ] 简化的核心模型 Traits引入高级模型/视图模型/关联模型 主从分布时候主数据库读操作支持 改进的join方法和order方法 [ 视图 ] 视图解析驱动设计(模板引擎) 所有方法不再直接输出而是返回交由系统统一输出处理 动态切换模板主题 动态切换模板引擎 [ 数据库 ] 完全基于PDO实现 简化的数据库驱动设计 SQL性能监控(需要开启数据库调试模式) [ 其他方面 ] 目录和MVC文件自动生成支持 I函数默认添加变量修饰符为/s 一个行为类里面支持为多个标签位定义不同的方法 接近完美的路由功能; 更灵活的控制器; API开发支持; 全新的文件自动生成; PHP的Traits特性的引入; Loader自动加载和实例化; 内置整合方便远程调试的SocketLog; 增强路由功能 新版的路由经过重新设计,功能大为增强,主要特性有: 动态注册路由 除了在路由配置文件中定义,现在可以通过\Think\Route类的静态方法注册路由。 register方法,用法如下: // 除了路由规则和路由地址外,其他都是可选 \Think\Route::register(路由规则,路由地址[,请求类型,路由参数,变量规则]); \Think\Route::register(new/:id,New/read,GET|POST); 简化: \Think\Route::get(new/:id,New/read); // 定义GET请求路由规则 \Think\Route::post(new/:id,New/update); // 定义POST请求路由规则 域名路由 可以给(子)域名或者IP指定路由规则,例如: // blog.thinkphp.cn 路由到index模块的blog控制器 \Think\Route::domain(blog.thinkphp.cn,index/blog); // admin.thinkphp.cn 路由到admin模块 \Think\Route::domain(admin.thinkphp.cn,admin); 新版的控制器设计的更为灵活,主要体现在如下几个方面: 可以无需继承任何控制器类; 控制器操作方法中无需关心输出问题; 直接支持在操作方法中操作视图类; 可以通过引入Traits或者继承扩展类的方式来增加控制器功能; 支持任意层次的控制器类设计; 新的控制器输出方式 新版的控制器设计本身和视图类以及模型类没有任何的绑定,操作方法中只需要返回需要输出的数据(包括字符串和数组,甚至是对象),例如: namespace app\index\controller; class
文档评论(0)