varexporter组件
varexporter组件
安装
1 |
$Composer Require --dev ob娱乐下载symfony / var-exporter
|
笔记
如果在Symfony应用程序之外安装此组件,则必须要求ob娱乐下载供应商/ autoload.php.
代码中的文件以启用Composer提供的类自动加载机制。读这篇文章更多细节。
出口/序列化变量var_export.功能:
用ob娱乐下载symfony \ component \ varexporter \ varexporter;美元的出口=VarExporter::出口(someVariable美元);//将$导出的数据存储在某些文件或缓存系统中以供以后重用元数据=file_put_contents.('exported.php'那美元的出口);//稍后,需要在需要时重新生成原始变量$ RegeneratedVariable.=要求'exported.php';
用ob娱乐下载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.
对象; 反射*
那iteratoriter
和RecursiveIteratorIterator
类别在序列化时抛出异常。
导出的数据是一个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.]]);