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 フォーマットから変換する場合、$param に false を渡すと、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',
),
)
|