V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
topthink
V2EX  ›  推广

ThinkPHP6.0RC2 版本发布——架构升级、精简核心

  •  
  •   topthink · 2019-04-22 13:14:43 +08:00 · 6406 次点击
    这是一个创建于 2026 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自从5.2版本变更为6.0以来,官方一直致力于优化架构和精简核心,同时也在准备手册和测试工作,在经过近 1 个月的开发迭代后,官方宣布发布 ThinkPHP6.0RC2版本。

    主要更新

    相比较RC1版本更新调整较大,主要更新如下:

    • 底层架构针对协程做优化调整
    • 增加 WEB 应用管理类Http
    • 增加应用初始化服务和服务注册机制
    • 查询事件和模型事件使用事件系统接管
    • Session类重构,不再使用 PHP 内置会话
    • Cookie类仅支持设置和写入,不再支持读取
    • 取消Config类的动态设置功能
    • 部分核心功能中间件化(页面 Trace、多语言、请求缓存和 Session 初始化)
    • 取消惯例配置文件
    • 增加驱动接口规范驱动开发
    • 改进 Db 类和查询类
    • 精简一些不必要的类库
    • 改进路由注册
    • 由于异常的需要View类改为内置,但默认仅支持原生 PHP 模板
    • 大量细节改进和修正

    安装框架

    6.0版本仅支持composer安装(建议使用国内镜像安装),也不再支持Git安装,由于尚未正式发布,目前仅支持安装6.0.x-dev开发版本。

    composer create-project topthink/think=6.0.x-dev tp
    

    关于扩展

    一些常用的官方扩展已经基本升级完成,但仍然可能存在问题,官方会继续完善及做好充分的测试,在此之前请不要完全依赖这些扩展。

    开发手册(预览版)

    官方完全开发手册已经发布,但仅仅是预览版,会随着框架的更新不断完善。欢迎大家在使用和学习的过程中及时反馈问题和建议,帮助我们尽快把新版趋于完善。

    开发手册扫小程序码直接阅读

    如果遇到问题,可以加入 QQ 群:789324282(仅限于6.0版本交流反馈),一起交流。

    44 条回复    2019-05-18 15:01:17 +08:00
    yase
        1
    yase  
       2019-04-22 15:48:00 +08:00
    哇,都出到 6 啦,我还用 5 呢。
    xoxo419
        2
    xoxo419  
       2019-04-22 16:04:40 +08:00
    还在用 3 呢、打算看下 5 的、6 都已出了、emmmm~
    Fleey
        3
    Fleey  
       2019-04-22 16:10:23 +08:00
    求求你别更新了,劳资学不动了。
    jevonszmx
        4
    jevonszmx  
       2019-04-22 16:50:11 +08:00
    @xoxo419 老项目还在用 2 的路过。。。
    baiban
        5
    baiban  
       2019-04-22 18:29:31 +08:00
    求求你们别更新了,把精力放到修复 BUG 和优化性能上吧。TP 更新太频繁了,向下兼容性太差。
    liuguang
        6
    liuguang  
       2019-04-22 20:27:37 +08:00
    随心所欲的改,呵呵,,我反正是不用了
    sansanhehe
        7
    sansanhehe  
       2019-04-22 22:21:14 +08:00
    可以可以
    dvaknheo
        8
    dvaknheo  
       2019-04-22 23:55:46 +08:00
    Session 类重构,不再使用 PHP 内置会话
    Cookie 类仅支持设置和写入,不再支持读取

    这两个是什么 ?
    jon
        9
    jon  
       2019-04-23 00:49:41 +08:00
    更新要改代码吗
    ritaswc
        10
    ritaswc  
       2019-04-23 01:19:45 +08:00
    看了 6.0 的目录结构,之前的代码几乎要大改才能放入现有的目录结构中,我先说一下优点吧
    1、不需要在 application(app)目录下,必须要有一个模块,例如 index
    2、终于把傻 X 的 /thinkphp 挪到 vendor 下面了
    3、终于没有那么多 hard code 的东西了

    待优化:
    1、为什么 demo 的 app/controller/Index.php 没有继承一个 BaseController 的东西???
    2、数据库的配置为什么要写死啊啊啊啊,不能用'hostname' => env('DB_HOSTNAME', '127.0.0.1') 这种可以读取根目录下面的.env 文件,以方便多环境不同数据库配置啊
    3、建议使用 Symfony/Foundation 基础轮子,这样子大家设计 PHP 轮子的时候,完美兼容 TP 了


    其实看到 TP 是由衷的恨铁不成钢,没有把 PHP 新特性、别的语言优秀的设计思想拿来,感觉就是自己琢磨一套
    多去国外 PHP 社区看看风气,着急死了
    ritaswc
        11
    ritaswc  
       2019-04-23 01:21:15 +08:00
    PS:我有在 github 上给 TP 提交一些 PR,暂时没有心力参与 6.0 的优化中,我还是希望 TP 越来越好的,不然也不需要写那么多文字了
    ywisax
        12
    ywisax  
       2019-04-23 01:41:25 +08:00
    讲真没什么吸引力。。。
    2589595915
        13
    2589595915  
       2019-04-23 01:52:14 +08:00 via iPhone
    @ritaswc 感谢你的回复。
    qianmeng
        14
    qianmeng  
       2019-04-23 06:32:27 +08:00 via Android
    前几天用 tp5 改了个东西,感觉还是不错的
    topthink
        15
    topthink  
    OP
       2019-04-23 10:25:17 +08:00
    @ritaswc 首先感谢建议
    1 控制器是否需要继承 取决于自身 实例没必要继承
    2 数据库怎么配置自己来决定 那个只是默认配置
    3 目录结构对于之前的 5.1 来说并没有大改 是不过原来的多模块设计变成多应用设计而已

    恨铁不成钢能理解 但 TP 这么多年还能保持更新 而且在追随主流现代化框架设计思想,原有用户都一直在抱怨每次升级变化太大,所以需要从 TP 用户群成长性考虑 ,也没有什么特别的 PHP 新特性需要引入了 其它的功能支持都是纳入扩展的规范
    GTim
        16
    GTim  
       2019-04-23 10:26:38 +08:00
    TinkPHP 源码的目录结构是越来越好了..赞一个

    TP5 的 Jump 单独一个目录,强迫症真的受不了
    topthink
        17
    topthink  
    OP
       2019-04-23 10:52:45 +08:00
    @GTim 因为 traits 目录是计划增加更多的 trait 的
    ThankYou
        18
    ThankYou  
       2019-04-23 11:07:31 +08:00
    赞一个
    topthink
        19
    topthink  
    OP
       2019-04-23 11:10:45 +08:00
    @baiban 如果不更新,就有人会说官方不思进取,更新频繁了又会有人抱怨,所以走自己的路,让别人说去吧!选择合适自己的版本最重要~
    ritaswc
        20
    ritaswc  
       2019-04-23 11:43:50 +08:00   ❤️ 1
    @topthink 我是很希望 TP 带领中国 PHP 走向正轨,把中国的技术环境带高一个层次,任重道远,我会支持的
    JaguarJack
        21
    JaguarJack  
       2019-04-23 12:21:08 +08:00 via iPhone
    支持 就是版本跨度太大 应该在 5 开始就拥抱 composer
    dvaknheo
        22
    dvaknheo  
       2019-04-23 12:31:22 +08:00
    6.0 可以作为试验版本, 5.0 稳定版本,3.2 php5 版本这么规划呗。
    neilp
        23
    neilp  
       2019-04-23 13:34:23 +08:00
    兼容性啊, 大哥。
    前几天想把一个项目升级, 之前是 tp3, 看了下 tp5。
    然后我决定用 nodejs 重写了。
    topthink
        24
    topthink  
    OP
       2019-04-23 13:36:04 +08:00
    @JaguarJack 在拥抱 composer 这件事上 TP 的策略是循序渐进的 因为太多用户卡在这个环节,经过两个版本的过渡,6.0 版本才强制使用 composer 安装( 5.0 和 5.1 是支持 composer 安装,并且 5.1 版本开始不提供官方下载)
    @dvaknheo 5.0 基本不更新了 5.1 目前是稳定版本而且是 LTS 虽然 3.2 的用户群还有很多,但官方已经无法支持了 6.0 是目前主要更新迭代版本
    @ritaswc 感谢支持
    815979670
        25
    815979670  
       2019-04-23 13:51:37 +08:00
    能不能把文档完善完善再完善?很多坑是因为文档介绍不清楚导致的
    比如 ThinkPHP5.0 foreach 模板标签 在文档里面没有 index 这个属性 我写的时候 随便试了一下 居然有这个用法??
    我再去反复看官方手册确认 完全没有提到这个属性
    (话说 ThinkPHP5.2 跳到 6.0,是不是为了抢 “比 laravel6 发布更早”这个名号才改的,个人观点 不喜勿喷)
    ben1024
        26
    ben1024  
       2019-04-23 14:15:35 +08:00
    感觉现在更需要优先扩大社区的影响力和规模,对于业务的解决方案。
    JackLiang
        27
    JackLiang  
       2019-04-23 14:35:51 +08:00
    上一次用 TP 还是 3,这么快就 6 了
    wo642436249
        28
    wo642436249  
       2019-04-23 14:57:31 +08:00   ❤️ 1
    哎,看不到什么特别吸引的地方,说实话我虽然没仔细看 tp6 的源码,作为一个一直将 tp5.0/tp5.1 作为生产项目使用框架的开发者表示,就此至今放弃在今后的新项目中使用 tp,而转用 laravel 或 yii3.0
    xavier007
        29
    xavier007  
       2019-04-23 15:00:09 +08:00
    @ritaswc env 方式读取 5.0 就有了,这个我看了看也支持啊
    passerbytiny
        30
    passerbytiny  
       2019-04-23 15:06:51 +08:00
    只能使用 composer create-project,也就意味着只能给新项目或重构项目使用了,这进而意味着 TP 只适合速成,不适合持续集成。
    demo2025
        31
    demo2025  
       2019-04-23 15:14:24 +08:00
    公司好几个项目都是用 tp5.1 开发的,很不错,当然也有很多不足。
    ritaswc
        32
    ritaswc  
       2019-04-23 15:49:11 +08:00
    @xavier007 我知道的,我推荐这么做,在使用 git 的时候,非常舒服
    topthink
        33
    topthink  
    OP
       2019-04-23 18:50:17 +08:00
    @passerbytiny 你可能有所误会 其实本意是想说只支持 composer 安装而已 create-project 只是新手安装方便而已
    @wo642436249 你可以具体反馈下不适用的原因 或者给我们提建议
    @815979670 TP6 是从之前的 5.2 版本变更而来,就是因为底层架构调整较大,无法满足 5.1 版本的无缝升级,因此更名的
    HiCode
        34
    HiCode  
       2019-04-23 18:53:59 +08:00
    tp 的作用只剩下用来筛选求职者了,在这一方面挺高效的!
    dvaknheo
        35
    dvaknheo  
       2019-04-23 19:36:51 +08:00
    \vendor\topthink\framework\src\think\console\bin\hiddeninput.exe

    src 里放这个不太好吧
    topthink
        36
    topthink  
    OP
       2019-04-24 17:40:28 +08:00
    @dvaknheo 放了你又能干嘛?又不是 web 部署目录 你去看下 symfony 的 console
    dvaknheo
        37
    dvaknheo  
       2019-04-24 23:15:32 +08:00
    @topthink 如果是我,我放在 和 src 同级的 bin 目录
    doyouhaobaby
        38
    doyouhaobaby  
       2019-04-25 16:20:48 +08:00
    任重而道远,数据库和 model 多写到测试用例,毕竟有一定复杂度,可维护性大大提高。
    ThankYou
        39
    ThankYou  
       2019-04-29 22:56:18 +08:00
    5.1 文档 composer require topthink/think-captcha 安装验证码 会报错
    topthink
        40
    topthink  
    OP
       2019-04-30 10:28:37 +08:00   ❤️ 1
    @ThankYou 不要安装 3.0 版本 5.1 只能安装 2.0 版本
    baiban
        41
    baiban  
       2019-05-04 20:37:53 +08:00
    @topthink 不是不让你们更新,是让你们尽量改在性能和稳定性上。不要在小版本里总是改一些向下不兼容的东西。很多过去用低版本 TP 开发的项目,根本不敢更新。或者更新成本太大。语法尽量不要去动。如果觉得不合理,那就积攒一些一起开个新的大版本分支,新特性不要放到老版本上。
    topthink
        42
    topthink  
    OP
       2019-05-05 11:17:42 +08:00
    @baiban 5.0 和 5.1 上有一些不兼容更新主要是安全更新导致的 一般不太可能变动语法,而且新版之所以跨版本发布也是考虑到升级问题
    ritaswc
        43
    ritaswc  
       2019-05-18 14:59:52 +08:00
    @topthink 大哥,解决一下 model 预加载的问题,我要疯了
    bug 也有提交
    http://www.thinkphp.cn/bug/4807.html
    ritaswc
        44
    ritaswc  
       2019-05-18 15:01:17 +08:00
    @topthink 有空顺手再把我的 PR 给 merge 一下
    https://github.com/top-think/think-captcha/pull/35
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.