内容简介:官方历时一年多倾力打造的ThinkPHP6.0版本正式发布,该版本基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化。 由于引入了一些新特性,ThinkPHP6.0运行环境要求PHP7.1+...
官方历时一年多倾力打造的ThinkPHP6.0
版本正式发布,该版本基于精简核心和统一用法两大原则在5.1
的基础上对底层架构做了进一步的优化改进,并更加规范化。
由于引入了一些新特性,ThinkPHP6.0
运行环境要求PHP7.1+
(推荐PHP7.3+
),不支持5.1
的无缝升级(官方提供了升级指导)。
文末有1024节日福利
主要特性:
- 采用
PHP7
强类型(严格模式) - 支持更多的
PSR
规范 - 多应用支持
ORM
组件独立- 改进的中间件机制
- 核心架构服务化
- 全新的事件系统
- 容器功能增强
- 模板引擎组件独立
- 内部功能中间件化
- SESSION机制改进
- 缓存及日志支持多通道
- 引入
Filesystem
组件 - 对
Swoole
以及协程支持改进 - 对IDE更加友好
- 统一和精简大量用法
强类型及严格模式
在主流框架里面,ThinkPHP6.0
是最先采用 PHP 7严格模式的。所有的核心文件都是开启了严格模式的类型约束,因此有任何的变量类型不符的情况都会抛出异常,有利于规范代码中的变量类型和提前发现问题隐患。
多应用模式
新版框架提供了多应用模式支持,默认安装为单应用,你只需要安装一个多应用模式扩展就可以更轻松的部署多个应用而不需要重复安装依赖组件,每个应用都支持独立入口访问以及域名绑定,也可以使用一个入口文件实现自动多应用部署。并且自动多应用模式支持智能识别,对于不存在的应用访问会自动切换到单应用模式进行匹配。同时支持应用的映射和禁止访问机制。
多应用模式的设计可以让开发更加模块化,因为每个应用的配置、路由及视图都可以纳入应用目录,所以更方便应用的模块化,甚至引入composer
应用。
容器和服务
新版的容器支持PSR-11
规范,容器类的功能特性主要包括:
- 绑定类、对象实例、接口到容器
- 创建类的实例(存在则直接获取)
- 容器对象绑定别名
- 支持容器对象(实例化)回调
- 获取容器对象实例
- 删除容器中的对象实例
- 提供依赖注入和门面实现支持
- 调用容器对象实例的方法(或者闭包)
- 提供容器对象的
ArrayAccess
支持
事件系统
新版的事件系统可以看成是5.1
版本行为系统的升级版,事件系统相比行为系统强大的地方在于事件本身可以是一个类,并且可以更好的支持事件订阅者。支持事件智能订阅,通过反射机制来识别当前订阅者要订阅的事件。
事件相比较中间件的优势是事件比中间件更加精准定位(或者说粒度更细),并且更适合一些业务场景的扩展。例如,我们通常会遇到用户注册或者登录后需要做一系列操作,通过事件系统可以做到不侵入原有代码完成登录的操作扩展,降低系统的耦合性的同时,也降低了BUG的可能性。
中间件支持完善
中间件分为全局中间件、应用中间件、路由中间件和控制器中间件,这四个中间件分组完全独立执行,但同一个分组内的中间件不会重复执行。中间件方法执行依赖注入,以及请求结束的回调机制。
核心很多功能都是基于中间件来完成,包括多应用模式也是采用中间件机制执行。
路由和请求
新版的路由精简了很多不必要的功能,路由定义也更加规范化和语义化,并且路由定义文件支持纳入应用目录,便于模块化开发。路由注解功能独立为think-annotation
库,并且使用更加规范,支持IDE提示。
新版的请求对象更易扩展,系统默认安装后提供了一个app\Request
类,你可以在应用中直接自定义请求对象,增加必要的属性和方法。但不会影响对think\Request
的依赖注入和门面调用。
系统服务
由于核心框架采用了服务化设计,你可以在你的扩展或者应用中注册需要的服务。在系统服务中注册一个对象到容器,或者对某些对象进行相关的依赖注入。由于系统服务的执行优先级问题,可以确保相关组件在执行的时候已经完成相关依赖注入。一个服务类通常包括注册(register
)和启动(boot
)方法,用于不同阶段的执行。
ORM组件化
内置的ORM功能已经完全独立为think-orm
组件,可以独立使用,ThinkPHP6.0
默认依赖安装了该组件,保持用法不变的同时,增强了查询功能。
模板引擎组件化
核心不再内置任何模板引擎,仅提供PHP模板支持,官方的模板引擎已经独立为think-template
模板引擎,并默认依赖安装。你可以更方便的使用第三方模板引擎。
日志系统
日志支持多通道、并统一命令行和WEB日志格式,主要包括:
- 日志增加多通道支持,可以同时或者切换写入多个通道
- WEB和CLI的日志记录格式统一,并支持日志格式化
- 对JSON日志格式的改进
- 支持日志写入事件
Session机制改进
6.0
版本的Session
机制完全重写了,并且不再使用PHP内置的Session
机制,全新实现一套Session
机制,可以更好的支持Swoole
/Workerman
等环境。
所以不再支持PHP内置的session_***
系列函数,也不再支持使用$_SESSION
读取session
数据,你必须通过框架提供的Session
类或者门面来操作,Request
类也封装了Session
数据的读取。
Session支持跨应用读取和自定义序列化机制,默认采用文件类型记录Session数据,由于共用了缓存机制,你还可以使用任何支持的缓存类型来记录Session数据。
引入Filesystem组件
新版增加了Filesystem
类库对文件系统强化了支持,而且可以很方便的支持各种云存储,包括阿里云和七牛云。
Swoole扩展改进
Swoole
扩展同时支持HTTP
和Socket
服务,支持数据库和缓存的连接池功能,以及RPC
功能。
调试 工具 更新
原来内置的页面Trace调试工具已经更改为扩展的方式,改成安装think-trace
扩展,如果通过composer安装应用的话,默认会安装topthink/think-trace
扩展。
基本用法和之前保持不变,但无需额外配置,默认使用html
方式显示,同时仍然支持浏览器控制台显示,并仅在调试模式下有效。
同时增加了一个基于debugbar
的调试扩展think-debugbar
,需要单独安装后才能使用。
composer require topthink/think-debugbar
统一和精简大量用法
新版对很多用法进行了精简和统一,尽可能避免在开发过程中规范不一的困惑。
开发手册
更多内容可以查看官方的完全开发手册。
抱着一份初心和坚持,ThinkPHP始终坚持完善和更新,十三年来持续发布了多个大版本。其实
ThinkPHP
历史以来的大版本都提供了超过年18个月的支持和维护,目前ThinkPHP主要版本的维护计划公告如下:
ThinkPHP版本 | 发布时间 | BUG修复 | 安全更新 |
---|---|---|---|
3.2(PHP5.3+) | 2013年12月18日 | 结束服务 | 结束服务 |
5.0(PHP5.4+) | 2016年9月15日 | 2019年1月1日 | 2020年1月1日 |
5.1(PHP5.6+) | 2018年1月1日 | 2020年1月1日 | 2021年1月1日 |
6.0(PHP7.1+) | 2019年10月24日 | 2021年1月1日 | 2022年1月1日 |
福利放送
最后是福利时间
庆祝新版发布,倾情奉献1024 程序员 节日福利
以上所述就是小编给大家介绍的《ThinkPHP 6.0 版本发布——程序员节福利来了》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 新手福利:免费百页机器学习入门书
- 围绕PowerShell事件日志记录的攻防博弈战(内含福利)
- 终端依赖者福利:终端也能实现翻译功能了
- 好书推荐 |《Web安全攻防:渗透测试实战指南》(福利见文末!)
- 初创公司福利:谷歌、IBM和Lyft共同推出微服务管理平台Istio
- 日程及讲师话题总览|2020 领域驱动设计峰会倒计时 5 天(文末有福利)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
大型网站系统与Java中间件开发实践
曾宪杰 / 电子工业出版社 / 2014-4-24 / 65.00
本书围绕大型网站和支撑大型网站架构的 Java 中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建 Java 中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的 Java 中间件系统的设计和实践。希望读者通过本书可以了解大型网站架构变迁过程中的较为通用的问题和解法,并了解构建支撑大型......一起来看看 《大型网站系统与Java中间件开发实践》 这本书的介绍吧!