varexporter组件

出口/序列化变量var_export.功能:

ob娱乐下载symfony \ component \ varexporter \ varexporter;美元的出口=VarExporter::出口someVariable美元);//将$导出的数据存储在某些文件或缓存系统中以供以后重用元数据=file_put_contents.'exported.php'美元的出口);//稍后,需要在需要时重新生成原始变量$ RegeneratedVariable.=要求'exported.php';

使用此组件的原因而不是连载()igbinary是性能:感谢opcache.,结果代码比使用更快,内存效率更多unsemalize()igbinary_unserialize()

此外,还有一些微小的差异:

  • 如果原始变量定义它们,则所有与之相关的语义连载()(如__醒来()__睡觉(), 和可序列化)保存(var_export()忽略它们);
  • 引用涉及SplObjectStorageArrayObject.ArrayTerator.实例保存;
  • 缺课会导致ClassNotFoundException.而不是被反序列化到php_incomplete_class.对象;
  • 反射*iteratoriterRecursiveIteratorIterator类别在序列化时抛出异常。

导出的数据是一个PSR-2兼容的PHP文件。考虑例如以下类层次结构:

抽象的班级抽象用{保护$ foo;私人的$酒吧;保护功能套管$酒吧{$这一点->酒吧=$酒吧;}}班级Concreteclass.延伸抽象用{公共功能__构造(){$这一点->Foo=123.;$这一点->套管234.);}}

出口时Concreteclass.Varexporter的数据,生成的PHP文件如下所示:

<?PHP.返回\ob娱乐下载 symfony \ component \ varexporter \内部\ hydator::水合物$ O.=[克隆\ob娱乐下载 symfony \ component \ varexporter \内部\注册表::$原型[“ob娱乐下载Symfony \ \测试组件\ \ VarExporter \ \ \ \ ConcreteClass ']? ?\ob娱乐下载 symfony \ component \ varexporter \内部\注册表::P.“ob娱乐下载Symfony \ \测试组件\ \ VarExporter \ \ \ \ ConcreteClass ')),],['ob娱乐下载symfony \\ component \\ varexporter \\ tests \\ apthontrclass'=>['foo'=>[123.],'酒吧'=>[234.],],],$ O.[0.],[]);

的实例ArrayObject.ArrayTerator.Splobjecthash.可以用特殊的方式创造吗“\ 0”属性名称定义其内部值:

//创建一个splobjecthash,$ info1与$ object1等相关。$ theObject.=实例化::实例化SplObjectStorage::班级[0.=>[$ Object1.$ Info1.$ Object2.$ Info2.......]]);//创建一个填充$ inputArray的ArrayObject$ theObject.=实例化::实例化ArrayObject.::班级[0.=>[$ InputArray.]]);

这项工作,包括代码样本,是在一个Creative Commons by-SA 3.0执照。