ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
创建数据对象:data()方法 1. 功能:给模型对象$data赋值,将模型对象转为数据对象 模型对象与数据对象,之间差异就在于模型对象$data是否赋值; 2. 方法:data()其源代码如下: ~~~ /** * 设置数据对象值 * @access public * @param mixed $data 数据或者属性名 * @param mixed $value 值 * @return $this */ public function data($data, $value = null) { if (is_string($data)) { //如果$data是字符串,则视为$data数组的键名 $this->data[$data] = $value; //给当前类data[$data键名]赋值:$value } else { // 清空数据 $this->data = []; if (is_object($data)) { //如参数$data是对象,将$data对象属性转关联数组给当前类的$data[]赋值 //注意:外部调用,仅限公共非静态属性可以转为关联数组 $data = get_object_vars($data); //对象属性转关联数组 } if (true === $value) { //第二个参数是布尔值true:1,用获取器方法给$data[]赋值 // 数据对象赋值 foreach ($data as $key => $value) { $this->setAttr($key, $value, $data); } } else { //将$data数组参数,直接绑定到到类的data[]属性上,完成初始化 $this->data = $data; } } return $this; //返回数据对象 } ~~~ 3. 参数与返回值 分析源码可看出,data()方法支持三类参数: |序号| 参数 | 说明 | |---|---|---| |1 |$string / 字符串|必须存在第2个参数,第一个是键名,第二个是值,用于给数据对象中$data属性数据元素赋值| |2 |$array / 数组|用于给对象中的$data属性批量赋值| |3 |$object / 对象|将对象转关联数组后,批量给$data属性赋值| 返回值:数据对象 4. 实例演示:模型对象中$data属性赋值 (1)逐个赋值:用双字符串参数实现 ~~~ <?php namespace app\index\controller; //导入模型类 use app\index\model\Staff; class Index { public function index(){ //1.创建模型对象$model $model = new Staff(); //2.重复调用模型对象的data()方法,完成对该对象属性$data的赋值 //赋值成功,则完成模型对象向数据对象的转换 $model -> data('id','10'); //$data['id'] = 10 $model -> data('name','Peter'); //$data['name'] = 'Peter' $model -> data('age',30); //$data['age'] = 30 //3.查看获取到了原始数据的模型对象 dump($model); } } ~~~ (2)批量赋值:用数组实现 ~~~ <?php namespace app\index\controller; //导入模型类 use app\index\model\Staff; class Index { public function index(){ //1.创建模型对象$model $model = new Staff(); //2.创建数组$data,用作数据对象数据源 $data = []; $data['id'] = 1010; $data['name'] = 'Peter'; $data['age'] = 50; //3.调用模型对象data方法,将$data数组赋值该对象的$data属性 //完成数据对象的创建 $model -> data($data); //3.查看对象 dump($model); } } ~~~ (3)用对象来实例化模型对象 ~~~ <?php namespace app\index\controller; //导入模型类 use app\index\model\Staff; class Index { public function index(){ //1.创建模型对象$model $model = new Staff(); //2.创建标准(通用)对象 $data $data = new \stdClass; //3.给标准对象$data添加属性 $data -> id = 1001; $data -> name = 'ThinkPHP5'; //4.调用模型对象data方法,将$data对象的属性逐个赋值给该对象$data属性 //完成数据对象的创建 $model -> data($data); //3.查看对象 dump($model); } } ~~~ 输出 ~~~ object(app\index\model\Staff)#5 (28) { //这里略去与本例无关的属性 ······ ["data":protected] => array(3) { ["id"] => string(2) "10" ["name"] => string(5) "Peter" ["age"] => int(30) } //这里略去与本例无关的属性 ······ } ~~~ data方法的三种参数,重点掌握:【数组】