ThinkORM发布V4.0.0版本——实体模型和模型分层
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(); } }
最后,我们总结一下实体模型的优势:
-
轻量化数据对象;
-
优化数据存取性能;
-
引入视图模型设计;
-
避免数据属性冲突;
-
利于模型分层设计。
更多实体模型的使用可以参考官方手册,已经同步更新相关内容。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
🎉 No-ORM 降低 DDD 实践成本 | Wow 5.3.2 发布
领域驱动|事件驱动|测试驱动|声明式设计|响应式编程|命令查询职责分离|事件溯源 官方文档:https://wow.ahoo.me/ 更新内容 特性(core):添加资源所有者支持 特性(exception):添加 ILLEGAL_ACCESS_OWNER_AGGREGATE 错误码映射 特性(webflux):添加所有者聚合前置条件检查 特性(elasticsearch):在事件流和快照模板中添加 ownerId 字段 特性(api):调整默认所有者值 特性(api):为聚合路由添加资源名称自定义功能 特性(mongodb):添加所有者 ID 索引并移除聚合 ID 集合 特性(api):为命令路由添加 appendOwnerPath 选项 特性(core):为命令添加所有者 ID 支持 特性(openapi):为 Swagger 添加空类转换器 重构(webflux):移除未使用的 ID 查询聚合功能 重构(webflux):通用化查询处理函数 重构(query):提取租户 ID 处理逻辑 重构(openapi):将 COMMAND_OWNER_PARAMETER 替换为 OWNER...
- 下一篇
Argo Rollouts 1.8 发布
Argo Rollouts 1.8 现已发布,具体更新亮点如下: Canary Step 插件 该新功能允许你在配置的 Canary Rollout 中设置新的步骤。通过这个插件系统,你可以创建插件,并在 Canary 分析过程中执行自己的步骤。这扩展了 Argo Rollouts 的能力,丰富了渐进交付体验,以适应多种场景。这是 v1.5 版本中为流量路由器和指标提供者创建插件系统的延续。 一旦实现,可以在 argo-rollouts-config ConfigMap 中进行配置: apiVersion:v1 kind:ConfigMap metadata: name:argo-rollouts-config data: stepPlugins:|- -name:"argoproj-labs/step-exec"#nameoftheplugin location:"file://./my-custom-plugin"#supportshttp(s)://urlsandfile://Ya 用户可以将此插件作为 Canary 步骤的一部分进行配置: apiVers...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G