DF

データ変換モジュール DF

Author : trashtoy

Table of Contents

オブジェクト指向な encode/decode API

パッケージ DF は, とあるデータを別の形式に変換したり, または戻したりするための API です.

このモジュールは, PHP の標準関数としてはじめから用意されている json_encode, json_decode, base64_encode, base64_decode などの各種 encode/decode 用 API と同等の機能を提供します.

標準関数の代わりにこのモジュールを使用することで, 以下に挙げるような恩恵が受けられます.

オブジェクト指向の利点を活かしたデータ変換

このモジュールは, インタフェース Codec とそれを実装した各具象クラス (Peach_DF_JsonCodec, Peach_DF_Base64Codec, Peach_DF_SerializationCodec など) から成り立っています.

例えば以下のように, とある関数で使用する Codec の種類を自由に指定 (依存性の注入) できるようにすることで, ある値をどの形式でデータ変換するのか動的に制御することができます.

  1. function convertData($varPeach_DF_Codec $codec{
  2.     return $codec->encode($var);
  3. }
  4.  
  5. $arr array(
  6.     "foo" => 100,
  7.     "bar" => 200,
  8.     "baz" => 300,
  9. );
  10. $c1 new Peach_DF_JsonCodec();
  11. var_dump(convertData($arr$c1))// string(31) "{"foo":100,"bar":200,"baz":300}"
  12. var_dump(convertData($arr$c2))// string(54) "a:3:{s:3:"foo";i:100;s:3:"bar";i:200;s:3:"baz";i:300;}"

PHP のバージョンや環境に依存しない JSON の入出力

PHP で JSON を取り扱う際に利用するものといえば json_encode(), json_decode() が一般的ですが, 以下のように移植性・互換性の点で注意する必要があります.

このモジュール内の JsonCodec クラスを使用することで, 以上の問題点を気にすることなく PHP 5.1.1 以上のすべての環境で JSON の入出力機能が実現できます. さらに JsonCodec では PHP 5.3.0 から 5.6.6 までに導入された以下のオプションすべてと同等の機能が使用できます.

  • JSON_HEX_TAG
  • JSON_HEX_AMP
  • JSON_HEX_APOS
  • JSON_HEX_QUOT
  • JSON_FORCE_OBJECT
  • JSON_NUMERIC_CHECK
  • JSON_BIGINT_AS_STRING
  • JSON_PRETTY_PRINT
  • JSON_UNESCAPED_SLASHES
  • JSON_UNESCAPED_UNICODE
  • JSON_PARTIAL_OUTPUT_ON_ERROR
  • JSON_PRESERVE_ZERO_FRACTION