如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
https://www.v2ex.com/solana
topthink
V2EX  ›  推广

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

  •  
  •   topthink · Apr 22, 2019 · 7356 views
    This topic created in 2577 days ago, the information mentioned may be changed or developed.

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

    这两个是什么 ?
    jon
        9
    jon  
       Apr 23, 2019
    更新要改代码吗
    ritaswc
        10
    ritaswc  
       Apr 23, 2019
    看了 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  
       Apr 23, 2019
    PS:我有在 github 上给 TP 提交一些 PR,暂时没有心力参与 6.0 的优化中,我还是希望 TP 越来越好的,不然也不需要写那么多文字了
    ywisax
        12
    ywisax  
       Apr 23, 2019
    讲真没什么吸引力。。。
    2589595915
        13
    2589595915  
       Apr 23, 2019 via iPhone
    @ritaswc 感谢你的回复。
    qianmeng
        14
    qianmeng  
       Apr 23, 2019 via Android
    前几天用 tp5 改了个东西,感觉还是不错的
    topthink
        15
    topthink  
    OP
       Apr 23, 2019
    @ritaswc 首先感谢建议
    1 控制器是否需要继承 取决于自身 实例没必要继承
    2 数据库怎么配置自己来决定 那个只是默认配置
    3 目录结构对于之前的 5.1 来说并没有大改 是不过原来的多模块设计变成多应用设计而已

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

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

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