class Aclas {
private $v = 1;
private $z;
protected $y;
public $xy;
}
$obja = new Aclas;
echo serialize( $obja );
我得到如下输出
O:5:"Aclas":4:{s:8:"Aclasv";i:1;s:8:"Aclasz";N;s:4:"*y";N;s:2:"xy";N;}
但有人请告诉我s:8
打开花括号后立即是什么。
class Aclas {
private $v = 1;
private $z;
protected $y;
public $xy;
}
$obja = new Aclas;
echo serialize( $obja );
我得到如下输出
O:5:"Aclas":4:{s:8:"Aclasv";i:1;s:8:"Aclasz";N;s:4:"*y";N;s:2:"xy";N;}
但有人请告诉我s:8
打开花括号后立即是什么。
{s:8:"Aclasv",
是字符串,长度为 8。
我正在寻找文档一秒钟。
更新: 似乎没有找到任何文档。也许我会寻找链接corresp。PHP源代码...我现在也很好奇。可能更容易进行逆向工程并理解它。
最佳链接 这很酷,代码有完整的解析器:https ://github.com/ktomk/Serialized
序列化是一组可以将序列化数据解析为规范化表示(半结构化数据或 S 表达式)的类。
首先,这个问题没有任何特殊意义,因为:
但如果你还想知道:
s:8 表示 8 个字节的字符串。它与“Aclasv”的长度不匹配,因为它很可能包含一些不可打印/特殊字符(准确地说是其他注释中指出的 null)。请查看此代码:
class A {
private $v = 1;
}
$obja = new A;
var_dump($obja);
// object(A)#1 (1) { ["v:private"]=> int(1) }
$x = serialize( $obja );
var_dump($x);
// note that this string is 27 chars long but only 25 are printed!
// string(27) "O:1:"A":1:{s:4:"Av";i:1;}"
var_dump(unserialize($x));
// object(A)#2 (1) { ["v:private"]=> int(1) }
// proof it is not the same:
var_dump(unserialize('O:1:"A":1:{s:4:"Av";i:1;}'));
// bool(false)