com.yamicha.php.serial
インタフェース PHPData

すべてのスーパーインタフェース:
java.lang.Cloneable, java.io.Serializable
既知の実装クラスの一覧:
PHPArray, PHPArrayBase, PHPGeneralData, PHPObject, PHPReference, PHPUndef, PHPVariable

public interface PHPData
extends java.lang.Cloneable, java.io.Serializable

あらゆる PHP 型の基底となるインタフェースです。
使い方としては、まず PHPUnserialize や PHPArray などのクラスから、PHPData 型の変数を取得します。
その後、それに対して getDataType() を用いて型を判別し、それぞれの PHP 型をラップするクラスにキャストして変換します。
キャストの操作は面倒ですが、配列に対して無限に配列を入れ子にするなど、高い柔軟性を提供します。


メソッドの概要
 PHPData copy()
          この PHPData 型をコピーしたデータを返します。
 int getDataType()
          この PHPData オブジェクトが表すデータ型を返します。
 int getPHPType()
          この PHPData オブジェクトに格納された PHP データ型を返します。
 java.lang.String getTreeString(int nest, PHPData[] pd)
          この PHPData を表す文字列を返します。
 byte[] serialize(java.lang.String s)
          この PHPData 型をシリアライズします。
 

メソッドの詳細

getDataType

int getDataType()
この PHPData オブジェクトが表すデータ型を返します。
例えば PHPConstant.TYPE_GENERAL が返されれば、このオブジェクトは普遍型であり、PHPGeneralData 型にキャストできます。

戻り値:
このオブジェクトが表すデータ型。PHPConstant の TYPE_ で始まる定数で返される
関連項目:
PHPConstant

getPHPType

int getPHPType()
この PHPData オブジェクトに格納された PHP データ型を返します。
例えば PHPConstant.PHP_STRING が返されれば、これは文字列型です。ただし、文字列に関しては特殊であり、PHP_STRING 及び PHP_STRING_JAVA の2つの定数が用意されています。
これは、PHP 変数としての扱いは同じであるものの、前者は byte[] 配列で、後者は String 型で文字列を管理していることを表します。

戻り値:
このオブジェクトに格納された PHP データ型。PHPConstant の PHP_ で始まる定数で返される

getTreeString

java.lang.String getTreeString(int nest,
                               PHPData[] pd)
この PHPData を表す文字列を返します。 toString() メソッドにより内部で使用されていますので、普段は toString() メソッドを使ってください。

パラメータ:
nest - 階層の深さ
pd - これまでに読み込んだ PHPData
戻り値:
文字列表現

serialize

byte[] serialize(java.lang.String s)
                 throws PHPSerializeException
この PHPData 型をシリアライズします。
リファレンス変換は行われませんので、リファレンス型を含むデータに用いると失敗します。 ただし、事前に PHPSerialize.prepare を実行したデータを変換する場合は、この限りではありません。
通常は PHPSerialize のインスタンスを生成し、その serialize メソッドから変換を行ってください。

パラメータ:
s - 文字列をバイトに変換する際に使用する文字コード
戻り値:
変換後のバイト配列
例外:
PHPSerializeException

copy

PHPData copy()
この PHPData 型をコピーしたデータを返します。
ただし、リファレンスのコピーは正しく動作しませんので、リファレンスを含むオブジェクトをコピーする場合には、必ず PHPSerialize.copy メソッドを使用する必要があります。