
阅读《2024 中国开源开发者报告》赢大奖,扫码申请享特权

ThinkORM
是一个基于PHP
和PDO
的数据库中间层和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
提供服务,就像Db
为Model
提供服务一样。如果你删除了这个Entity
,Model
又立马自动满血复活。
虽然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(); } }
最后,我们总结一下实体模型的优势:
-
轻量化数据对象;
-
优化数据存取性能;
-
引入视图模型设计;
-
避免数据属性冲突;
-
利于模型分层设计。
更多实体模型的使用可以参考官方手册,已经同步更新相关内容。
还没有评论,来说两句吧...