## 獲取數據對象原始數據: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.實例演示