varexporter组件

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

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

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

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

  • 如果原始变量定义它们,则所有与之相关的语义连载()(如__醒来()__睡觉(), 和可序列化)被保留(var_export()忽略它们);
  • 参考文献涉及splobjectstorage.ArrayObject.或者ArrayTerator.实例保存;
  • 缺少课程扔了一个ClassNotFoundException.而不是没有酶促php_incomplete_class.对象;
  • 反射*iteratoriterReCursiveIteratorator类别在序列化时抛出异常。

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

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

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

<?PHP.返回\欧宝娱乐app下载地址 symfony \ component \ varexporter \内部\ hydator::水合物$ O.=[克隆\欧宝娱乐app下载地址 symfony \ component \ varexporter \内部\注册表::$原型['欧宝娱乐app下载地址symfony \\ component \\ varexporter \\ tests \\ concreteclass']\欧宝娱乐app下载地址 symfony \ component \ varexporter \内部\注册表::P.'欧宝娱乐app下载地址symfony \\ component \\ varexporter \\ tests \\ concreteclass')),],空值['欧宝娱乐app下载地址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.]]);

这项工作包括代码样本,是在a下获得的许可Creative Commons by-SA 3.0执照。