remi-san/serializer 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

remi-san/serializer

最新稳定版本:v1.2.2

Composer 安装命令:

composer require remi-san/serializer

包简介

A universal, config-less PHP serializer for all purpose.

README 文档

README

Author Build Status Quality Score Software License Packagist Version Coverage Status SensioLabsInsight

Based on GeneratedHydrator, it serializes recursively, adding metadata to the generated array in order to be able to deserialize an object without knowing its type beforehand.

Installation

Serializer can be found on Packagist. The recommended way to install Serializer is through composer.

Run the following on the command line:

composer require remi-san/serializer=@stable

And install dependencies:

composer install

Usage

$classMapper = new RemiSan\Serializer\Mapper\DefaultMapper(
    new RemiSan\Serializer\NameExtractor\DefaultNameExtractor()
);
$classMapper->register(RemiSan\Serializer\Sample\MySampleClass::class);

$serializer = new RemiSan\Serializer\Serializer(
    $classMapper,
    new RemiSan\Serializer\Hydrator\HydratorFactory(__DIR__ . '/proxies', true),
    new RemiSan\Serializer\Formatter\FlatFormatter(),
    new Doctrine\Instantiator\Instantiator()
);

$object = new MySampleClass(new MySampleClass());
$serialized = $serializer->serialize($object);
$deserialized = $serializer->deserialize($serialized);

Command usage

When installing through composer, a CLI command is also made available (in vendor/bin/ or bin/ according to your composer.json):

bin/serializer generate:cache <cache-path> <fully-qualified-class-name>

It will write the cached version of the hydrator for the requested class in the path you provided.

You'll have to generate cached files for all your serializable classes when running in production (with the generateProxies option of the HydratorFactory set to `false).

You'll also have to make the autoloader aware of your hydrators by adding the following to your composer.json:

{
    "autoload": {
        "classmap": [
            "/path/to/cache-dir"
        ]
    }
}

Details

To be instantiated, the Serializer needs a SerializableClassMapper, a HydratorFactory, a DataFormatter and an Instantiator.

SerializableClassMapper is used to register the classes the serializer will be able to (de-)serialize. It needs a SerializableClassNameExtractor which will be able to normalize the name of the class the way you want it.

HydratorFactory will retrieve the hydrators needed to deserialize data. It needs the path to the cache directory and whether or not, it should generate the proxies on runtime.

DataFormatter will provide the way the serialized array will be formatted (provided implementations allow it to format it as a 2-level array or a flat one with a _metadata key).

Instantiator will allow to instantiate an object without the constructor based on the fully qualified class name of the requested object.

统计信息

  • 总下载量: 14.48k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 2
  • 推荐数: 2

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-03-07