Format 类別
Format 类別幫助你在各種格式間轉換,如 XML、JSON、CSV 等。
配置
Format 类別是透過 fuel/core/config/format.php 配置档案進行配置。它已经填充了一个預設配置群組。你可以藉由複製此配置档案到你的应用程序 config 目录,并根據需求修改該档案,以覆寫此配置群組并添加新群組。
以下配置設定可以被定義:
CSV
delimiter |
字串 |
','
|
欄位分隔符 |
enclosure |
字串 |
'"'
|
包圍符 |
newline |
字串 |
'\n'
|
給 to_csv() 方法使用的換行符 |
escape |
字串 |
'\\'
|
轉義字元 |
預設情況下,这些配置設定被用來導入及導出 CSV 資料。
在你需要为導入或導出配置不同設定的情況,你可以給它一个陣列鍵,并把配置移到那裡。
預設配置档案已经給你这个設置。
regex_newline |
字串 |
'\n'
|
給正規表達式使用的換行符以轉換輸入資料 |
enclose_numbers |
布林 |
true
|
如果为 false,数字不会被包圍。如果为 true,数字也会被包圍 |
XML
basenode |
字串 |
'xml'
|
XML 基础節點名稱 |
use_cdata |
布林 |
false
|
是否要在節點中使用 CDATA |
JSON
options |
整数 |
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
|
json_encode() 選項 |
請注意,某些組合的結果是不可預知的。例如,如果你有 CSV 資料,沒有包圍字元、沒有标題、并在第一列中嵌入換行符號,档案中的正確欄位数無法被計算。
forge($data = null, $from_type = null, $params = null)
forge 方法回傳一个新的 format 物件。$from_type 支援 'xml'、'yaml'、'csv'、'json'、'serialize' 和 'xml:ns'。'xml:ns' 能让你完全解析 namespaced-xml。沒指定 $from_type 時,$data 会直接被傳遞。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$data |
null
|
要轉換的資料。 |
$from_type |
null
|
所提供的資料格式。 |
$param |
null
|
要被傳遞給轉換器的選擇性參数。 |
|
回傳 |
Fuel\Core\Format 物件 |
範例 |
$array = array('foo' => 'bar');
print_r(Format::forge($array));
// 回傳
Fuel\Core\Format Object
(
[_data:protected] => Array
(
[foo] => bar
)
)
|
當從 CSV 格式轉換,你可以傳遞 false 做为 $param 來指示 CSV 來源不包含任何表頭。如果是这樣,最終結果会是一个索引陣列。
to_array($data = null)
to_array 方法回傳所給的資料为陣列。不要直接呼叫,使用如範例所述的 forge 方法。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$data |
null
|
要轉換的資料。 |
|
回傳 |
陣列 |
範例 |
$json_string = '{"foo":"bar","baz":"qux"}';
print_r(Format::forge($json_string, 'json')->to_array());
// 回傳
Array
(
[foo] => bar
[baz] => qux
)
|
to_xml($data = null, $structure = null, $basenode = 'xml', $use_cdata = false)
to_xml 方法回傳所給的資料为一个 XML 字串。不要直接呼叫,使用如範例所述的 forge 方法。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$data |
null
|
要轉換的資料。 |
$structure |
null
|
SimpleXMLElement 类別物件。 |
$basenode |
"xml" |
XML 标記的基本節點。 |
$use_cdata |
false |
是否要在節點中使用 CDATA |
|
回傳 |
字串 |
範例 |
$array = array('foo' => 'bar', 'baz' => 'qux');
print_r(Format::forge($array)->to_xml());
// 回傳
// <?xml version="1.0" encoding="utf-8"?>
// <xml>
// <foo>bar</foo>
// <baz>qux</baz>
// </xml>
|
to_csv($data = null, $delimiter = null, $enclose_numbers = null, array $headings = array())
to_csv 方法回傳所給的資料为一个 CSV 字串。不要直接呼叫,使用如範例所述的 forge 方法。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$data |
null
|
要轉換的資料。如果沒給,forge() 的輸入会被使用。 |
$delimiter |
null
|
CSV 欄位分隔符。如果沒給,預設配置会被使用。 |
$enclose_numbers |
null
|
如果为 false,不会被包圍。如果为 true,数字也会被包圍。如果沒給,預設配置会被使用。 |
$headings |
array()
|
CSV 欄位名稱的陣列。如果沒給,欄位名稱会根據資料陣列中的第一列來定義。 |
|
回傳 |
字串 |
範例 |
$json_string = '{"foo":"bar","baz":"qux","nr":1}';
print_r(Format::forge($json_string, 'json')->to_csv(null, null, false));
// 回傳
// "foo","baz","nr"
// "bar","qux",1
$json_string = '{"foo":"bar","baz":"qux","nr":1}';
print_r(Format::forge($json_string, 'json')->to_csv(null, null, false, array('this', 'that', 'num')));
// 回傳
// "this","that","num"
// "bar","qux",1
|
to_json()
to_json 方法回傳所給的資料为一个 JSON 字串。不要直接呼叫,使用如範例所述的 forge 方法。
靜態 |
否 |
回傳 |
字串 |
範例 |
$array = array('foo' => 'bar', 'baz' => 'qux');
print_r(Format::forge($array)->to_json());
// 回傳
// {"foo":"bar","baz":"qux"}
|
to_serialized()
to_serialized 方法回傳所給的資料为一个序列化字串。不要直接呼叫,使用如範例所述的 forge 方法。
靜態 |
否 |
回傳 |
字串 |
範例 |
$array = array('foo' => 'bar', 'baz' => 'qux');
print_r(Format::forge($array)->to_serialized());
// 回傳
// a:2:{s:3:"foo";s:3:"bar";s:3:"baz";s:3:"qux";}
|
to_php()
to_php 方法回傳所給的資料为 PHP 表達字串中的資料。你可以傳進 eval() 或用做其他瘋狂的事情。
靜態 |
否 |
回傳 |
字串 |
範例 |
$array = array(1, 2, array('a', 'b', 'c'));
print_r(Format::forge($array)->to_php());
// 回傳
Array
(
0 => 1,
1 => 2,
2 => array(
0 => 'a',
1 => 'b',
2 => 'c',
),
)
|