Format クラス

Format クラスは、XML、JSON、CSV 等の様々なフォーマット間の変換ができます。

設定

Format クラスは、 fuel/core/config/format.php にある設定ファイルで設定をします。デフォルトで設定がされています。設定を変更するには、設定ファイルをアプリケーションの設定ディレクトリにコピーし、そのファイルを変更してください。

次の設定を定義することができます。

CSV

パラメータ タイプ デフォルト 説明
delimiter string
','
デリミタ
enclosure string
'"'
囲み文字
newline string
'\n'
to_csv() メソッドで利用される改行文字
escape string
'\\'
エスケープ文字

デフォルトでは、これらの設定は CSV データのインポートにもエクスポートにも使われます。 インポートとエクスポートで別の設定が必要な場合、配列のキーを用い設定をその中に移します。 デフォルトの設定ファイルはすでにそのようになっています。

regex_newline string
'\n'
入力データを変換するために正規表現で使用される改行文字
enclose_numbers bool
true
false の場合、数字は囲まれません。true の場合、数字も囲まれます

XML

パラメーター タイプ デフォルト 説明
basenode string
'xml'
XML ベースノードの名前
use_cdata boolean
false
ノードの中で CDATA セクションを使用するかどうか
bool_representation mixed
null
How booleans must be represented (0/1 vs false/true)

JSON

パラメータ デフォルト 説明
options integer
JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP
json_encode() の options

いつくかの組み合わせは予測不可能であることに留意してください。例えば、囲み文字なし、ヘッダなし、最初の行に改行コードが含まれない CSV データは、ファイルの正確なフィールド数を計算できません。

forge($data = null, $from_type = null, $params = null)

forge メソッドは、新しい format オブジェクトを返します。$from_type は、'xml''yaml''csv''json''serialize''xml:ns' をサポートします。'xml:ns' は、全ての 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 フォーマットから変換する場合、$paramfalse を渡すと、CSV ソースがヘッダを含まないことを示せます。その場合、結果はインデックス配列になります。

to_array($data = null)

to_array メソッドは、与えられたデータを配列として返します。直接呼び出すのではなく、例にもあるように forge メソッドを利用します。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$data
null
変換されるデータ。
返り値 array
$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 セクションを使用するかどうか。
返り値 string
$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 フィールド名の配列。与えられない場合、データの配列の最初の行が使われる。
返り値 string
$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 メソッドを利用します。

静的 いいえ
返り値 string
$array = array('foo' => 'bar', 'baz' => 'qux');
print_r(Format::forge($array)->to_json());

// 実行結果
// {"foo":"bar","baz":"qux"}
							

to_serialized()

to_serialized メソッドは、与えられたデータをシリアル化された文字列として返します。直接呼び出すのではなく、例にもあるように forge メソッドを利用します。

静的 いいえ
返り値 string
$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 コードとして返します。この PHP コードを eval() で評価することや、他にも思いもつかないようなことに利用することができます。

静的 いいえ
返り値 string
$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',
	),
)