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

喜迎双“旦”, ThinkPHP V5.0.4 版本发布^_^——文末有福利

  •  
  •   kancloud · 2016-12-20 11:09:35 +08:00 · 4847 次点击
    这是一个创建于 2929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ThinkPHP V5.0 ——为 API 开发而设计的高性能框架

    V5.0 版本由七牛云独家赞助发布

    V5.0.4 主要更新:

    • 关联模型重构并增加多态一对多关联;
    • 数据库支持一个字段多次调用不同查询条件;
    • 增加数据库 CURD 事件支持;
    • 路由到类和控制器的方法支持传入额外参数;
    • 支持全局模板变量赋值;
    • 模型支持独立设置查询数据集对象;
    • 日志针对命令行及调试做出改进;
    • 改进 Hook 类的行为方法调用

    [请求和路由]

    • 请求缓存支持模块单独开启
    • Request 类post方法支持获取json方式的请求数据
    • 路由到类的方法和控制器方法 支持传入额外参数,用于方法的参数
    • 改进控制器自动搜索的目录规范
    • 改进请求缓存
    • 改进自动参数绑定
    • 修正路由的请求缓存设置
    • 改进 Route 类 name 方法

    [数据库和模型]

    • 增加数据库查询( CURD )事件
    • 改进多表更新的字段不存在问题
    • 改进 Model 类的useGlobalScope方法
    • 修正子查询作为表名查询的问题
    • Model 类增加resultSetType属性 用于指定模型查询的数据集对象(默认为空返回数组)
    • Model 类增加toCollection方法(自动调用)
    • 关联模型架构调整
    • 改进预载入with方法的参数支持小写和下划线定义
    • 修正关联多对多一处错误
    • 改进关联多对多的查询
    • 关联模型支持多态一对多关联
    • 预载入关联查询支持关联对象属性绑定到当前模型
    • 支持追加关联对象的属性到当前模型数据
    • 一对一关联预载入支持 JOIN 和 IN 两种方式(默认为 JOIN )
    • 改进多对多查询
    • 改进模型更新的数据变化比较规则
    • 查询支持一个字段多次查询条件
    • 改进 sql 日志的 sql 语句
    • 修正join自身表的别名覆盖问题
    • 模型类的connection属性和数据库默认配置合并
    • 改进inbetween查询条件的自动参数绑定
    • 改进 Query 类对数据集对象以及关联字段排序的支持
    • 增加模型的快捷事件方法
    • 改进 Query 类的getTableInfo方法缓存读取
    • model 类的saveAll方法支持调用allowField方法进行字段过滤
    • 修正关联查询的时候 whereTime方法的 bug
    • 改进 Query 类的聚合查询
    • table 方法支持字符串方式的子查询
    • 修正count avg方法使用fetchsql无法正确返回 sql 的问题

    [其它]

    • 改进命令行下的日志记录
    • 部署模式下简化日志记录
    • 增加 debug 日志类型 仅限调试模式记录
    • 改进 Template 类parseTemplateFile方法
    • 改进 Validate 类的getRuleMsg方法
    • 控制器的error方法在 AJAX 请求默认返回 url 为空
    • Validate 类架构方法增加field参数 用于设置验证字段的描述
    • 改进 App 类invokeMethod方法对架构函数依赖注入的支持
    • 增加 RedirectResponse 的restore方法返回值
    • View 类增加share静态方法 用于静态赋值模板变量
    • 验证类增加hasScene方法判断是否存在某个场景的验证配置
    • 修正 redis 和 session 驱动的destroy方法返回值
    • 空操作方法的参数传入去掉操作方法后缀
    • 在控制器中调用 request 和 view 增加类型提示
    • 改进input助手函数支持多维数据获取
    • Cache 类增加pullremember方法
    • 改进验证类的confirm验证规则 支持自动规则识别
    • 改进验证类的错误信息定义
    • 增加 Validate 类自定义验证错误信息的替换规则
    • Cookie 类增加forever方法用于永久保存
    • 模板渲染支持从视图根目录读取模板
    • 改进 Hook 类的 exec 方法

    [调整]

    • Db 类查询不再支持设置自定义数据集对象
    • 废除 Query 类的fetchClass方法
    • 控制器的error方法在 AJAX 请求默认返回的 url 为空
    • 关联方法定义不支持使用小写下划线,必须使用驼峰法
    • 行为类的方法必须使用驼峰法命名

    [ 文档 ]

    官方开发手册已经同步更新到 V5.0.4 版本 [ 5.0 快速入门系列教程 ]

    [ 下载地址 ]

    Composer 安装 : composer create-project topthink/think tp5 --prefer-dist

    [ Github ]

    [ 码云 ]

    [ Coding ]

    [ 扩展包 ]

    下面是针对 ThinkPHP5 的扩展包 需要使用 Composer 安装

    [捐赠]

    通过支付宝捐赠支持我们:

    2016 年 12 月 20 日 ThinkPHP 官方团队

    [福利]

    最后新版发布福利: 由阿里云提供的 50 个免费套餐邀请码

    领码地址>> http://click.aliyun.com/m/8306/ (数量有限 先到先得)

    39 条回复    2016-12-21 21:03:27 +08:00
    tabris17
        1
    tabris17  
       2016-12-20 11:51:01 +08:00   ❤️ 1
    无论怎么洗, TP 会以一个“自带 SQL 注入漏洞”的框架被铭记
    nyanyh
        2
    nyanyh  
       2016-12-20 12:03:18 +08:00
    最近看到了好多批判 TP 的帖子,到底应不应该学啊
    kancloud
        3
    kancloud  
    OP
       2016-12-20 12:21:11 +08:00
    @tabris17 看问题要客观些嘛,那是上个世纪的事了 不要始终停留在老版本的认知上 认真了解下 TP5 孰好孰坏,自有用户来评断!
    vugusurk
        4
    vugusurk  
       2016-12-20 12:27:05 +08:00
    话说 LZ 是和 ThinkPHP 有一腿?这么帮着洗

    anyway ,反正我是不会用的
    skyworker
        5
    skyworker  
       2016-12-20 12:28:39 +08:00   ❤️ 1
    @vugusurk 这个是 TP 的"官方号", 说话还是客气一点吧
    kancloud
        6
    kancloud  
    OP
       2016-12-20 12:32:00 +08:00
    @vugusurk 看云是 ThinkPHP 官方出品的 文档在线写作和托管、电子出版平台,所以我代表的就是官方(可以看我的发布记录),是一体,没有一腿^_^ 这不是洗,是重新定位!

    @nyanyh 在 V2EX 上所谓的批判不过是小题大做或者是对新版的认识不够~
    kancloud
        7
    kancloud  
    OP
       2016-12-20 12:34:33 +08:00
    @skyworker 只要相互尊重 善意和客观的批评和建议 我们是欢迎的 看不惯的是没头脑的吐槽,再说我们也不是第一天被人说 ^_^
    kmahyyg
        8
    kmahyyg  
       2016-12-20 12:38:11 +08:00 via Android
    反正我是不会用的
    wujunze
        9
    wujunze  
       2016-12-20 13:05:38 +08:00
    TP 还是很用心在更新和维护的 也是很多 PHP 程序猿的入门框架
    m939594960
        10
    m939594960  
       2016-12-20 13:25:04 +08:00
    @wujunze 希望半年后还有人这么评价 TP
    chaegumi
        11
    chaegumi  
       2016-12-20 13:37:09 +08:00
    我 composer 了之后,
    Fatal error: Uncaught Error: Class 'think\Config' not found in D:\upupw\htdocs\server\o2o\thinkphp\library\think\Route.php:294 Stack trace: #0
    maggiefor
        12
    maggiefor  
       2016-12-20 13:43:06 +08:00   ❤️ 1
    天天吵吵吵的 技术圈搞的跟娱乐圈似的
    chaegumi
        13
    chaegumi  
       2016-12-20 13:49:18 +08:00
    @kancloud 发现跟验证码 think-captcha 里边的有关,我把验证码这个 composer 包去掉又正常了
    AbrahamGreyson
        14
    AbrahamGreyson  
       2016-12-20 14:11:13 +08:00
    ThinkPHP 是对 OOP 的亵渎。
    kancloud
        15
    kancloud  
    OP
       2016-12-20 14:21:55 +08:00
    @AbrahamGreyson 兄弟 有问题和建议尽管提 本来就是开源项目~ 还有这里是 TP5 新版发布 不是 TP3
    byuc
        16
    byuc  
       2016-12-20 14:32:24 +08:00
    @AbrahamGreyson 就一个项目就亵渎了你的 OOP 神明,逢年过节你是不是还得拜上一拜烧上点什么东西? 23333
    KIDJourney
        17
    KIDJourney  
       2016-12-20 14:38:25 +08:00 via Android   ❤️ 1
    没用过 tp 也没读过框架代码。
    但我觉得楼上几位扯什么亵渎什么自带注入最好还是拿出代码来批判。
    老拿黑历史来说不太好吧。
    xavier007
        18
    xavier007  
       2016-12-20 14:39:23 +08:00
    新版源码还么看,所以不置评
    AbrahamGreyson
        19
    AbrahamGreyson  
       2016-12-20 15:19:24 +08:00
    @kancloud 我说的也是 5 ,代码大概内测之前看过,忘了是几个月之前了:)
    AbrahamGreyson
        20
    AbrahamGreyson  
       2016-12-20 15:19:40 +08:00
    @byuc 你要来咬我么 lol
    chenset
        21
    chenset  
       2016-12-20 15:45:22 +08:00
    支持 TP!
    dhlwing
        22
    dhlwing  
       2016-12-20 16:03:47 +08:00
    虽然没有用过 TP ,也没看过 TP 的代码,但楼上的一帮傻叼们,亮出你们的代码看看你们是不是有资格嘲讽别人?
    sagaxu
        23
    sagaxu  
       2016-12-20 16:15:47 +08:00
    我预测有人要吐槽了
    lzkong1029
        24
    lzkong1029  
       2016-12-20 16:36:29 +08:00
    支持!
    phithon
        25
    phithon  
       2016-12-20 16:48:25 +08:00
    吐槽不可取,要支持新版本的推广~
    kancloud
        26
    kancloud  
    OP
       2016-12-20 17:19:25 +08:00
    @phithon
    @lzkong1029
    @dhlwing
    @chenset
    @xavier007
    @KIDJourney 感谢大家 ^_^
    多一些了解 就会多一些认可 抱着偏见是看不到真相的 在国内坚持做 10 年不容易 多少年风雨都过来了 国产开源当自强
    xavier007
        27
    xavier007  
       2016-12-20 17:30:20 +08:00
    我倒是一直在用 thinkphp3.2 ,用了几年了,期间用 TP 也出现过一些莫名其妙的问题。正在选定新框架,看了 laravel 还有 YII2 ,对比 thinkphp3.2 还有 thinkphp5 ,最终选定 TP5 (核心代码没有看,简单看了下文档)。
    我处在小城市,选一个框架不能只自己用的舒服,需要考虑到新入团队人员的学习接受能力,我们的业务一般都不算太复杂,所以 TP 足够,而且 laravel 入门太难,一个新手花一个月了解,几个月熟悉,周期有点太长,而且一个月都不一定可以了解, YII2 和 TP 的话感觉差别对于我们不大,同样也考虑好久 YII2 ,但是最终考虑到 TP 会的人多,相对入门也容易,而且 TP5 很多新特性也不错,和 workerman 也有结合,对我们的项目来说,已经很完美了!
    wensonsmith
        28
    wensonsmith  
       2016-12-20 17:59:21 +08:00
    想当年大学毕业设计用的 ThinkPHP , 现在想起这个框架,满满的青春回忆啊!一转眼 4 年过去了啊!

    V 站怎么染了逼乎的风气,吐槽 TP 还自带优越感的感觉。。。越是战五渣,越是能吐槽
    realpg
        29
    realpg  
       2016-12-20 19:20:25 +08:00   ❤️ 1
    珍爱编程生命,远离 ThinkPHP
    程序员入此坑,基本 80%就没了后续自身职业发展了。
    让他带歪了了路,以后再想走直可就难了……

    PS 利益无关。
    chaegumi
        30
    chaegumi  
       2016-12-20 19:25:29 +08:00
    @realpg 现在的公司技术选型是 thinkphp5 ,也只能硬着头皮先上了。
    Hashell
        31
    Hashell  
       2016-12-20 19:55:53 +08:00 via Android
    想折腾的话,可以考虑 ThinkPHP 5 。不想加班就用 Yii 2 。
    kancloud
        32
    kancloud  
    OP
       2016-12-20 20:14:58 +08:00
    @realpg 如果你身边真见到被框架带歪的 那学什么都学不好 那是自身的问题 不要怪到框架头上来,这年头被培训班坑的不在少数, BAT weibo 当当的开发都不用混了 有本事有事说事 不要说这些不着边际的~
    mingyun
        33
    mingyun  
       2016-12-20 23:15:51 +08:00
    黑来黑去有意思吗?用 tp 的人自然明白
    minamike
        34
    minamike  
       2016-12-21 09:30:54 +08:00
    三个程序员一台戏(手动滑稽
    请开始你们的婊演
    zgqq
        35
    zgqq  
       2016-12-21 11:25:40 +08:00
    我就知道有"大神"来吐槽 tp ,哈哈
    daya
        36
    daya  
       2016-12-21 15:20:19 +08:00   ❤️ 1
    吐槽 TP 的可以拿出点干货吗?也让我们提高一下姿势水平
    kancloud
        37
    kancloud  
    OP
       2016-12-21 16:17:51 +08:00
    本来发这个贴是一个框架新版发布和福利贴,结果硬生生的被 V 友做成了吐槽贴。

    我不得不给一些吃瓜群众正声!

    其实每个框架都各有优缺点 没有完美,所以优缺点就看开发者的角度和认识(因为你熟悉了一个框架 用起来顺手本身就是一个优点),对于有些用户(尤其是新人)觉得文档好、上手容易是优点,有些用户觉得性能好是优点,又有些用户可能觉得方便扩展才是优点。但往往一个缺点会掩盖所有的优点,这就是很多用户抱怨的原因。喜欢一个框架一定有喜欢的地方,讨厌一个框架也总能找出理由。

    以往的版本我们就不说了(已经过了维护生命期了 大家也没有必要揪着历史说事,事物都在发展),毕竟和 LV 相提并论的最多也是 TP5 。

    我们在开发 TP5 的时候 一方面吸收了以往版本的用户反馈和抱怨,一方面也吸收了国外主流框架思想的洗礼(例如 Laravel ,很多用户说 TP5 参考了 yii2 ZF2 其实并没有 如果你看到了只能说明主流的现代思想是速途同归的),并秉承了 TP 一贯的大道至简的开发思想,经过了长达十月的开发测试才诞生了第一个 TP5 的正式版本,并且已经迭代到了 V5.0.4 版本了。应该来说表面上沿用了 Larave 的很多方法和思想,其实本质上的实现差异很大或者完全不同。 沿用(或者说是在有些人眼中的抄袭也好)的目的主要包括: 1 我们找不到更适合的英文单词(但 LV 很多单词是用的很生僻, TP5 主要的单词都是四级之内词汇) 2 我们在为吸收转化 LV 开发用户做铺垫^_^

    因此在上手难度和性能上相比较 laravel 是占优势的,加上从正式版发布后的文档教程系列一直在完善(主要是迎合国内的新手),因为从 TP3.2 版本到 5.0 版本跨度非常之大,我们也认识到存在不可避免的用户流失(相比较 TP3.2 引入了很多的主流现代开发思想,需要补课很多 包括 composer 、面向对象、依赖注入等),但我们也相信,我们的新版本也会俘获另外一批懂我们的用户,从而转向 TP5 (事实上确实如此)。

    TP5 并非只是单纯的借鉴,一样有大量的创新,尤其在路由、日志、控制器和模型的一些细节方面,这些只有真正去用过才能体会。 TP5 的底层架构和 LV 是完全不同的设计,但都遵循一些规范(包括 PSR-2 , PSR-4 , RESTFul ),并都在往主流的设计思想靠拢。

    但作为一个新诞生的孩子路还有很长,生态之类的还不够完善( LV 也不是靠官方团队做大的 有大量的人在为生态贡献),所以从我们的角度来看, TP5 和 LV5 孰好孰坏,没有绝对,从长远来看, TP5 在国内替代 LV5 的可能性越来越大,至少在国内我们的优势非常明显(可以参考百度指数和谷歌趋势数据),包括性能、文档以及社区(如果是盲目崇拜 LV 的我也无话可说,毕竟国内也有盲目崇拜 TP 的^_^)。

    因为 LV 的架构和内部实现相当的复杂,相比较而言 TP 的代码和文档 都非常容易阅读和理解,那么扩展起来自然就会轻松很多, LV 主打的就是优雅、现代编程思想以及优秀的扩展生态。但 TP5 一样优雅,并且功能不会缺失太多,至于扩展生态方面就需要靠社区和用户的参与和贡献了。在国内 PHP 开源框架这块,我们风风雨雨走了十多年,我们了解我们的用户的想法,同时也在学习吸收国际的现代开发思想。

    总结来说, TP5 更简单实用,文档丰富, LV 更严谨,生态成熟。性能在这个时代其实已经不是最关键的了,所以我并不想强调性能方面的,国内的企业更关注的是开发周期和开发成本。
    changwei
        38
    changwei  
       2016-12-21 20:24:42 +08:00
    还是建议 ThinkPHP5 如果真真切切是为了做成一个新手友好型框架,那么之后的版本能够同步把文档写的完整一点,到现在模型层的文档还是缺胳膊少腿,比如说把对象的方法原型贴出来,或者在一些容易采坑的地方加上 tag (这一点 ci 的官方文档做得非常好),毕竟不是每个新手都会使用 IDE 或者正确使用 IDE 的。

    我当然知道开源社区有句话叫做 you can you up ,所以我在这里只是提一个小小的建议,文档对于新手来说无比的重要,求不重喷。
    kancloud
        39
    kancloud  
    OP
       2016-12-21 21:03:27 +08:00
    @changwei 就是需要更多这样的反馈和建议 才能让我们做的更好,完全手册覆盖面广,所以很难面面俱到的说的很细(其实路由、数据库和模型章节已经写的很多了 ,只是不一定通俗罢了),而教程会就某一方面做更多的深入和示例,这就是官方的快速入门系列的宗旨。新手不适合看手册,我发现他们连搜索都不会,而完全开发手册的章节非常之细,以至于他们不知道去哪里找,还有一些用户看文档 断章取义,以偏概全。这种问题 我们在 3.2 版本的时候就发现了 ,所以 5.0 版本除了手册之外,还单独花心思写了快速入门系列教程,当然教程的收费问题导致争议很大,我也不想在这里讨论这个问题。 TP 框架的细节就是注释和文档针对新手,完全容易阅读和理解。很多人对 TP 要求很高,我们也一直在努力,事实上我也并没看到 Laravel 官方的文档有多优秀,倒是不少第三方的教程比较给力。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   962 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.