シリアル化されたphp文字列の詳細が文書化されているリソースを誰かが教えてくれるかどうか疑問に思っていました. 基本的にフォーマット/構造を知りたいので、VB.NETで関数を記述してシリアル化/逆シリアル化できます。
ありがとう!
シリアル化されたphp文字列の詳細が文書化されているリソースを誰かが教えてくれるかどうか疑問に思っていました. 基本的にフォーマット/構造を知りたいので、VB.NETで関数を記述してシリアル化/逆シリアル化できます。
ありがとう!
基本的な構造は次のとおりです。
スカラー型:
ブール値は次のようにシリアル化されます。
b:<i>;
ここで、 (false) または(true)<i>のいずれかの値を持つ整数です。01
整数は次のようにシリアル化されます。
i:<i>;
は<i>整数値です。
float は ( ddouble を意味する) 次のようにシリアル化されます。
d:<f>;
は<f>float 値です。
文字列は次のようにシリアル化されます。
s:<i>:"<s>";
ここ<i>で、 は の文字列の長さを表す整数で<s>、<s>は文字列値です。
特別なタイプ:
null次のように単純にシリアル化されます。
N;
複合タイプ:
配列は次のようにシリアル化されます。
a:<i>:{<elements>}
ここ<i>で、 は配列内の要素数を表す整数で、<elements>0 個以上のシリアル化されたキーと値のペアです。
<key><value>
ここで<key>、シリアライズされたスカラー型と、シリアライズ<value>可能な任意の値を表します。
オブジェクトは次のようにシリアル化されます。
O:<i>:"<s>":<i>:{<properties>}
ここで、最初の<i>は の文字列の長さを表す整数で<s>、<s>は完全修飾クラス名です (完全な名前空間が前に付加されたクラス名)。2 番目<i>は、オブジェクト プロパティの数を表す整数です。<properties>ゼロ個以上のシリアル化された名前と値のペア:
<name><value>
ここ<name>で、プロパティ名を表すシリアル化された文字列と、シリアル化<value>可能な任意の値です。
ただし、キャッチが<name>あります:
<name>として表されます
s:<i>:"<s>";
の<i>文字列の長さを表す整数です<s>。ただし、の値は<s>、プロパティの可視性によって異なります。
を。With public properties<s>は、プロパティの単純な名前です。
b. ただし、保護されたプロパティでは、2つの文字で囲まれたアスタリスク(つまり)<s>を前に付けた、プロパティの単純な名前です。\0*\0NULchr(0)
c. また、プライベートプロパティの場合、<s>はプロパティの単純な名前で、先頭に\0<s>\0—が追加され、2文字で<s>囲まれます。 は完全修飾クラス名です。NUL<s>
参照を表すなど、他にもいくつかのケースがありますが、R:<i>;ここでは言及していません (正直なところ、その正確な仕組みをまだ理解していないためです)。 .
phpinternalsbook でこのページが完全に完成していることがわかりました。また、インターフェイスを実装するクラスの代替シリアル化形式とSerializable、形式指定子の意味も示しRます。