## 數據輸出
`ExpressPHP` 的數據都是由控制器的方法返回的,控制器返回的數據都是采用 `Response` 類統一輸出的。
>[info] 直接返回數組,數組會自動轉換為 json 輸出。
~~~
namespace app\controller;
class Index
{
public function index()
{
$data = ['uid' => 100, 'userName' => '小花'];
return ['errCode' => 0, 'errMsg' => 'ok', 'data' => $data];
}
}
~~~
最終可以在瀏覽器中看到輸出結果如下:
~~~
{"errCode":0,"errMsg":"ok","data":{"uid":100,"userName":"小花"}}
~~~
>[info] 默認數組是轉換為 json,也可修改為其他類型,比如 jsonp、xml。
修改 `config.response.array_default_convert` 配置項為如下:
~~~
'array_default_convert' => 'xml',
~~~
>[info] 指定為 json 類型返回。
~~~
namespace app\controller;
use sys\response\Json;
class Index
{
public function index()
{
$data = ['uid' => 100, 'userName' => '小花'];
// 指定為json類型
return Json::create(['errCode' => 0, 'errMsg' => 'ok', 'data' => $data]);
}
}
~~~
最終可以在瀏覽器中看到輸出結果如下:
~~~
{"errCode":0,"errMsg":"ok","data":{"uid":100,"userName":"小花"}}
~~~
>[success] Json類輸出的數據不會轉義中文、反斜杠,能更好的支持iOS,同時節約流量。
## null轉空字符串
開發 `API` 時,因為 `iOS` 解析含有 `null` 的 `json` 時會報致命錯誤,`ExpressPHP` 的 `Json` 類與 `Pdo` 類都可以對null轉空字符串,默認是不開啟的,需用戶手動開啟。
>[info] A. [Json輸出] 修改 config.json.null_to_string 配置項如下:
~~~
// 將 NULL 轉換成空字符串
'null_to_string' => true,
~~~
修改后,`Json` 類輸出的數據會將 `null` 轉為空字符串
>[info] B. [數據庫返回] 在 pdo.attribute 配置項增加如下:
~~~
\PDO::ATTR_ORACLE_NULLS => \PDO::NULL_EMPTY_STRING
~~~
修改后,數據庫 `Pdo` 類返回的結果集會將 `null` 轉為空字符串
>[success] 推薦使用修改 pdo.attribute 的方式,PDO原生支持,性能更好。