## 获取数据对象原始数据:getData()
>[info] 所谓数据对象原始数据:其实就是对象的$data=[ ]数组的值
#### 2. 源码
>[info] 本教程如无特别说明:源码均指:Model.php 类文件中的内容。
文件位置:/thinkphp/library/think/Model.php
~~~
/**
* 获取对象原始数据 如果不存在指定字段返回false
* @access public
* @param string $name 字段名 留空获取全部
* @return mixed
* @throws InvalidArgumentException
*/
public function getData($name = null)
{
if (is_null($name)) { //如何不传参数
return $this->data; //返回整个数组(模型对象中与记录对应的字段集)
} elseif (array_key_exists($name, $this->data)) { //参数键名是否$data中存在
return $this->data[$name]; //返回当前数组元素,如:$data['name'],name为字段名
} else { //如果传入的键名在表中无对应字段对应,则返回错误信息
throw new InvalidArgumentException('property not exists:' . $this->class . '->' . $name);
}
}
~~~
>[info] 源码分析:如果该方法有参数,则把参数做为数组键名,返回对应的值;如果不传入任何参数,则返回整个$data数组
* * * * *
#### 3. 参数与返回值
* 参数:
| 序号 | 参数 |说明 |
| --- | --- | --- |
| 1 | $name/字符串 | 与数据对象$data属性对应的数组键名 |
| 2 | 无 | 不传入参数,则返回整个数据对象原始数据$data |
* 返回值:
| 序号 | 条件 | 返回值 |
| --- | --- | --- |
| 1 | 参数$name | 与数据对象$data对应的数组元素值 |
| 2 | 无参数 | 返回整个数据对象原始数据$data数组 |
| 3 | $name与$data键名不匹配 | false 错误 |
* * * * *
#### 4. 实例演示
1. 先创建一个自定义模型类,继承自Model类
> 因为Model类是抽象类,必须定义他的子类才可以使用
* 模型文件:/application/index/model/Staff.php
~~~
<?php
namespace app\index\model;
//导入模型类
use think\model;
class Staff extends model {
//自定义模型类代码
}
~~~
2. 控制器文件: Index.php
~~~
<?php
namespace app\index\controller;
//导入模型类
use app\index\model\Staff;
class Index {
public function index(){
//1.创建模型对象$model
//此时的模型对象仅仅完成了与特定数据表的绑定
//理论上讲,仍是一个没有任何数据的空模型
$model = new Staff();
//2.创建数据源,供创建数据对象使用
$data = [];
$data['id'] = 1001;
$data['name'] = 'Peter';
$data['age'] = 26;
//3.data()方法完成前面模型对象的$data属性赋值
//使模型对象转换成数据对象,现在$model 已经是数据对象啦
$model -> data($data);
//4.getData()方法获取数据对象原始数据$data
$result = $model -> getData();
//5.查看数据对象原始数据:$data属性(数组类型)
dump($result);
}
}
~~~
* 现在打开浏览器运行Index控制器的index方法:
~~~
//以下就是数据对象的原始数据
//其实就是将数据对象中$data属性值输出
array(3) {
["id"] => int(1001)
["name"] => string(5) "Peter"
["age"] => int(26)
}
~~~
>[info] 现在是输出了全部的原始数据,如果我们只需要其中一个元素,怎么做呢?
* getData方法参数传入键名字符串,可获取指定的单个原始数据元素
* 我们仅修改上面控制器代码第四步操作即可:
~~~
//4.getData()方法获取数据对象原始数据$data['name']的值
$result = $model -> getData('name');
~~~
* 这样即可获取原始数据$data中的name键名对应的值:
~~~
string(5) "Peter"
~~~
* * * * *
#### 4. 总结:
>[success] 这个方法很灵活,即可获取完整的原始数据,也可以获取其中的一个数据。在开发也是最常用的方法,特别是在模板制作中用得很多,一定要熟练掌握。
- 前言[随时更新]
- 开发环境
- 1.Mac环境
- 2.windows环境
- 模型对象
- 1.创建模型对象
- 2.模型初始化
- 数据对象
- 1.定义数据对象
- 2.创建数据对象
- 1.data方法
- 2.setAttr方法
- 3.__set方法
- 4.查询数据对象
- 1.getData方法
- 2.getAttr方法
- 3.__get方法
- OOP难点总结
- 1.get_class( )实例讲解
- 2.get_called_class( )实例讲解
- 3.__call( )实例讲解
- 3.__callStatic( )实例讲解
- 4.call_user_func_array函数[重点]
- 5.普通方法与静态方法
- 6.在Model源码中的应用
- 7.new static 延迟静态绑定
- PHP标准化规范
- 查询数据
- 1.获取单条:get静态方法
- 2.获取单条:对象查询
- 3.获取多条:all静态方法
- 4.获取多条:对象查询
- 5.获取字段值:value方法
- 6.获取列值:column方法
- 7.动态查询:getBy字段名
- 8.助手函数:model查询
- 9.加载器:Loader类查询
- 10.数据库与模型查询对比
- 新增数据
- 1.sava方法
- 2.savaAll方法
- 3.create静态方法
- 4.insert静态调用
- 更新数据
- 1.单条更新:save方法
- 2.批量更新:saveAll方法
- 3.静态更新:update方法
- 4.查询类Query直接更新
- 5. 闭包更新
- 删除数据
- 1.删除当前记录:delete
- 2.静态条件删除:destory
- 获取器
- 1.模型方法:set属性Attr
- 修改器
- 1.set属性Attr
- 时间戳
- 1.MySQL中日期类型复习
- 2.时间戳功能详解
- 软删除[重点]
- 1.traits详解[选学内容]
- 2.SoftDelet类源码分析
- 3. delete实例删除
- 4.destroy条件删除
- 5.restore恢复数据
- 类型转换
- 1. 规则设置
- 2. 实例演示
- 查询范围
- 1. 基本概念
- 2.实例演示