首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yii2 VS thinkphp5.0

Yii2 VS thinkphp5.0

作者头像
写PHP的老王
发布2019-08-12 15:21:21
2K0
发布2019-08-12 15:21:21
举报
文章被收录于专栏:写PHP的老王写PHP的老王

Yii2.0使用一年多了,最近因为原来公司狗带了,换了公司,开始使用tp5.0。之前也有使用过tp3.2的框架,但是每次问及各个框架之前的区别的时候,总是不觉得有什么区别。但是从目前对tp5一周的使用时间来看,tp5相对于yii2来说,确实是弱爆了。

1、Yii2所有的操作都是对象操作。所有的对象都继承Yii中的Object对象。TP中,有对象也有函数。TP中的各个对象没有明显的继承关系。各自为类,定义不同的属性以及方法。

2、Yii2架构组织明确,同一类的对象必定有一个父类,在父类中定义相同的方法。在TP中,同一类对象没有什么继承关系,有的完全没有任何关系,内部提供的一些方法也不同。

比如Controller类,在Yii中有yii/web/Controller,有yii/rest/Controller,同样是控制器,他们必定有一些相同的操作,所有相同的操作都会在yii/base/Controller类中定义,同时通过抽象方法的形式定义控制器必须实现的方法。

在TP5中,普通控制器提供一个tink\Controller对象,同时,框架也允许在应用中的控制器可以不继承think\Controller。同样rest请求中,TP5中提供一个think\Controller\Rest的类做为控制器。注意,think\Controller\Rest 跟think\Controller没有任何关系。。。。。。think\Controller中提供一个validate的方法进行数据验证,但是think\Controller\Rest 中没有这个方法。同时,还有一些其他方法也不同。

3. ORM的不同。

YII2中,数据model时跟数据表完全映射的。一个model对象就是一条数据记录。对象的属性数据就是记录中各字段的内容。TP5中,数据model时一数据表的操作对象。提供一些数据操作方法而已。

Yii2中,new model(),然后调用save()方法,这个model就是一个完整的数据表记录,数据表的多有字段映射成为对象属性。TP中的save()方法是把记录写入数据库。然后就没了。这里有个很大的问题就是写入数据库之后,当前model不具备数据表该记录的所有字段数据。

举个栗子:user表中有id,username,password,create_time,四个字段。create_time 在数据库中设置自动获取当前时间戳。

Yii2

$user = new User();

$user->username='test';

$user->password = md5('111111');

$user->save();

echo $user->create_time;

TP5

$user = new User();

$user->username='test';

$user->password = md5('111111');

$user->save();

echo $user->create_time;//报错,提示user对象没有create_time属性

更新的时候还好些,因为必须先把数据从数据库中查询出来才操作,所以,更新的时候是能获取数据表内所有字段信息。难道TP要让人家插入一条数据库在查询一次去获取数据吗?

时间差不多,后续接着更新。欢迎大家关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 写PHP的老王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档