Loading [MathJax]/jax/output/HTML-CSS/jax.js

Yii2的模型类的 load() 方法是干什么的?底层原理是什么?

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Yii2的模型类的 load() 方法是干什么的?底层原理是什么?

Yii2 的模型类中的 load() 方法是用来从请求中获取数据并加载到模型对象中的方法,其底层原理主要依赖于 PHP 的魔术方法 __set() 和 __get()。

当我们调用 model>load(data) 方法时,实际上会调用 __call() 魔术方法,该方法会根据方法名 load 创建一个动态的 yii\base\ModelEvent 事件对象,并触发一个 EVENT_BEFORE_VALIDATE 事件,这样就可以在该事件的处理函数中对数据进行修改或预处理。

然后,该方法会遍历 datamodel->attribute=value 的形式来给模型对象的属性赋值,这里会调用到 __set() 魔术方法,从而把请求中的数据加载到模型对象中。

最后,load() 方法会再次触发一个 EVENT_AFTER_VALIDATE 事件,这样就可以在该事件的处理函数中对数据进行进一步的修改或验证。如果验证失败,该方法会返回 false,否则返回 true。

相关文章
|
SQL 存储 BI
数仓学习---数仓开发之ADS层
数仓学习---数仓开发之ADS层
775 1
|
11月前
|
存储 小程序 JavaScript
|
12月前
|
缓存 Linux
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stoc
CentOS 默认的镜像源可能无法访问。可以更换为其他镜像源,例如阿里云、腾讯云等。
944 7
|
NoSQL Ubuntu 安全
Ubuntu 20.04下载安装redis一条龙
Ubuntu 20.04下载安装redis一条龙
|
12月前
|
JavaScript 前端开发
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
【vue】 Tinymce 数据 回显问题 | 第一次正常回显后面,显示空白bug不能编辑
982 0
|
监控 关系型数据库 数据库
rds跨账号迁移
rds跨账号迁移
388 2
|
SQL 关系型数据库 MySQL
数据库必知词汇:SQL方言
SQL方言(或者数据库方言)指的是用于访问数据库的结构化查询语言的变体,根据具体的数据库系统不同,也可能会支持不同的方言。
3700 0
|
弹性计算 Linux 数据安全/隐私保护
Linux【问题记录 01】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
Linux【问题记录 01】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
429 0
解决elementui中el-table表格首次expand展开不能正常渲染展开页面里面的表格内容
解决elementui中el-table表格首次expand展开不能正常渲染展开页面里面的表格内容
|
小程序 iOS开发
uniapp中IOS端小程序底部黑线适配的方法(整理)
uniapp中IOS端小程序底部黑线适配的方法(整理)

热门文章

最新文章