您现在的位置是:首页 > 文章详情

ThinkORM发布V4.0.0版本——实体模型和模型分层

日期:2025-02-14点击:51

ThinkORM是一个基于PHPPDO的数据库中间层和ORM类库,以优异的功能和突出的性能著称,提供了更优秀的性能和开发体验,最新版本要求PHP8.0+。4.0版本主要引入了实体模型以及更方便的模型分层设计。

4.0版本支持3.0版本的无缝升级,并且3.0版本不再做功能更新,仅提供BUG修复。

关键特性

实体模型对象是ThinkORM4.0的一个新特性,采用了实体模型后,相当于给模型层做了一个分层设计,把越来越臃肿的模型进行拆分,原来的Model层则变成了仓储模型,负责数据的查询、关联和事件,及持久化,相对来说侧重于底层操作,而实体模型则承担了数据定义、展示、处理及业务逻辑的角色,当然,在较大的项目中,可以单独把业务逻辑拆分为一个逻辑层或服务层,在项目中应尽可能的遵循这个原则进行分工设计。

如果需要使用4.0版本,可以使用下面的命令安装:

 composer require topthink/think-orm:4.0 

4.0版本完全兼容3.0版本,因此无需担忧升级兼容问题。

Entity类采用了类似“热插拔”的机制,一旦你定义了Entity类,就自动对Model进行了功能拆分,原来Model类的部分功能就会被Entity自动接管。

比如你原本用Model查询返回的是Model对象,当定义了Entity类后,便会自动返回Entity对象。

 // 如果定义了 app\entity\Blog // 查询结果返回类型会自动变成 app\entity\Blog $blog = \app\model\Blog\:find(1); 

这个时候Model则退居幕后为Entity提供服务,就像DbModel提供服务一样。如果你删除了这个EntityModel又立马自动满血复活。

虽然Entity与Model用法相似,但重生的Entity解决了Model原本遗留的几个设计问题,比如数据属性冲突。Entity类采用WeakMap对象,巧妙地消除了这一难题。看似不显眼的Entity,实则身怀绝技,不仅接管了Model的部分功能,还引入了自动验证、自动关联、视图模型及属性器等新特性,事实上如果你不需要用到模型关联,甚至能不依赖Model独立运行(直接基于Db层)。

Entity的最大贡献在于赋予了模型层分层机制,在项目规模不断扩大的今天,这点尤为重要。以前我们需要在Model上增加Logic层,而现在Entity本身就能胜任这项工作。

 namespace app\entity; use think\Entity; class User extends Entity { public function register($data) { $this->save($data); } } namespace app\controller; use app\entity\User; use think\Request; class Index { public function register(Request $request) { $data = $this->getUserData(); $user = new User(); $user->register($data); return $this->responseSuccess(); } } 

最后,我们总结一下实体模型的优势:

  • 轻量化数据对象;

  • 优化数据存取性能;

  • 引入视图模型设计;

  • 避免数据属性冲突;

  • 利于模型分层设计。

更多实体模型的使用可以参考官方手册,已经同步更新相关内容。

 

原文链接:https://www.oschina.net/news/333692
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章