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',
	),
)