botanick / serializer
用于将任何PHP结构(标量、对象、数组等)序列化为PHP基本类型(标量、标量数组、数组数组)的库。
dev-master / 1.0.x-dev
2018-02-11 08:19 UTC
Requires
- php: >=5.3.9
- symfony/config: ~2.3
- symfony/finder: ~2.3
- symfony/property-access: ~2.3
- symfony/yaml: ~2.3
Requires (Dev)
- phpunit/phpunit: ~4.8
- symfony/filesystem: ~2.3
This package is not auto-updated.
Last update: 2024-09-12 16:36:55 UTC
README
此库允许您将任何复杂性的PHP结构序列化为PHP基本类型:标量、数组、标量数组、数组数组等。结果可以安全地存储在某个地方或通过使用serialize()、json_encode()或其他将普通数组转换为字符串的方法传递到任何地方。
此库包含以下内置序列化器:
null- 标量(bool, int, float, string)
- PHP
resource类型 - 数组和
\Traversable \DateTime- 对象(可以通过自定义配置灵活配置)
安装
此库通过composer管理。您可以通过调用以下命令安装它:
$ composer require botanick/serializer
或手动将其添加到您的composer.json
"require": { "botanick/serializer": "dev-master" }
用法
序列化器的使用分为两个基本步骤。
首先,您应该构建您将要使用的数据序列化器。例如,如果您打算仅序列化DateTime数组,则您的代码将如下所示
use Botanick\Serializer\Serializer; $arraySerializer = new Serializer\DataSerializer\ArraySerializer(); $dateTimeSerializer = new Serializer\DataSerializer\DateTimeSerializer(); // for detailed info on DateTimeSerializer options see an according section $dateTimeSerializer->setDefaultOptions(array('format' => 'Y-m-d H:i:s'));
然后您需要序列化器知道它应该使用哪些数据序列化器
use Botanick\Serializer\Serializer; $serializer = new Serializer\Serializer(); $serializer->addDataSerializer($arraySerializer, -9999); $serializer->addDataSerializer($dateTimeSerializer, -8888);
这就完成了!现在您可以序列化您的数据了
$data = array( new \DateTime(), 'yesterday' => new \DateTime('1 day ago'), 'dates' => array( 'some-date' => \DateTime::createFromFormat('H:i:s d.m.Y', '11:22:33 01.02.2003'), 'another-date' => \DateTime::createFromFormat('d.m.Y', '01.02.2003') ) ); $serializedData = $serializer->serialize($data); var_export($serializedData); // you will see something like this: // array ( // 0 => '2015-12-08 16:42:54', // 'yesterday' => '2015-12-07 16:42:54', // 'dates' => // array ( // 'some-date' => '2003-02-01 11:22:33', // 'another-date' => '2003-02-01 16:42:54', // ), // )