パッケージ com.yamicha.php.serialize

このパッケージは、PHP(5.1まで動作確認済み)の unserialize 関数で復元できるデータを生成します。

参照先:
          説明

クラスの概要
PHPConstant このクラスでは、PHP との直列化変換を行う際に使用する定数を定義しています。
PHPSerialize このクラスは、PHP 直列化を実現します。
PHPSerializeStream このクラスを用いると、変数を個別に登録していくことで、データを直列化できます。
PHPUndef PHP undef 値をマップするクラスです。
PHPVariable PHP 変数名、変数のアクセス指定子、及びそれが定義されたクラスを管理します。
 

パッケージ com.yamicha.php.serialize の説明

このパッケージは、PHP(5.1まで動作確認済み)の unserialize 関数で復元できるデータを生成します。 このデータはデータベースやファイルなどを経由して受け渡すことができ、Java から PHP へのデータの受け渡しを強力にサポートします。
PHPVariable ではアクセス指定子を設定することができますが、これは PHP 5.0 で新しく追加された機能です。PHP 5.0 未満の PHP 向けに直列化データを生成する場合は、PHPVariable は必ず PHPConstanta.PHP_PUBLIC として作成するか、変数名のみを取るコンストラクタを使って初期化してください。
データの直列化に際しては、「PHPSerialize」を用いることができますが、通常型や配列に関しては容易に登録できる反面、オブジェクトを登録するのに制約が多い(Javaで同じ構造のクラスを作らなければならず、そのクラスには Serializable を実装し、さらに保存するフィールドはすべて public にしなければならない。PHP アクセス指定子も指定できない)という弱点があります。
そこで、オブジェクトを直列化する場合には、「PHPSerializeStream」が便利です。このクラスは、まずクラス名を指定してインスタンスを構築し、そのインスタンスに対して変数名と値(プリミティブ型を含む)を登録していくだけで、PHP オブジェクトを構築することができます。アクセス指定子(PHP 5.0 以降)を使用することもできます。
例えば、次のような PHP クラス構造を想像してください。

class Ilias{
        public $friend; // 以下のクラスの変数データが格納されている
}
class DualKnight{
        private $pri = 64;
}
class Sara extends DualKnight{
        protected $pro = "文字列";
        public $pub = 3.5;
}
これを、このライブラリで実装するなら、こうなります。
// クラス Sara を構築
PHPSerializeStream member = new PHPSerializeStream("Shift_JIS" , "Sara");

// private DualKnight::pri 変数を登録
member.setObject(new PHPVariable(PHPConstant.PHP_PRIVATE , "DualKnight" , "pri") , 64);
// protected pro 変数を登録
member.setObject(new PHPVariable(PHPConstant.PHP_PROTECTED , "pro") , "文字列");
// public pub 変数を登録
member.setObject("pub" , 3.5);

// クラス Ilias を構築
PHPSerializeStream pss = new PHPSerializeStream("Shift_JIS" , "Ilias");
// Ilias の中に Sara のオブジェクトを持たせる
pss.setObject("friend" , member);