ThinkPHP6.0RC2 版本发布架构升级、精简核心 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
topthink
V2EX    推广

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

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

    自从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 新特性需要引入了 其它的功能支持都是纳入扩展的规范
    yemoluo
        16
    yemoluo  
       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 走向正轨,把中国的技术环境带高一个层次,任重道远,我会支持的
    akagishigeru
        21
    akagishieru  
       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 版本的无缝升级,因此更名的
    Q4h7388nR28s95fa
        34
    Q4h7388nR28s95fa  
       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     Solana     2592 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 03:07 PVG 11:07 LAX 19:07 JFK 22:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86