krtv/yii2-jms-serializer
This extension provides a Serializer
component, that would allow you to use JMS Serializer library
with Yii framework 2.0., (*1)
JMSSerializer allows you to (de-)serialize data of any complexity. Currently, this extension supports JSON and XML., (*2)
It also provides you with a rich tool-set to adapt the output to your specific needs., (*3)
Built-in features include:, (*4)
- (De-)serialize data of any complexity; circular references are handled gracefully.
- Supports many built-in PHP types (such as dates)
- Supports versioning, e.g. for APIs
- Configurable via PHP, XML and YAML
For license information check the LICENSE-file., (*5)
Documentation is at docs/guide/README.md., (*6)
, (*7)
Install
The preferred way to install this extension is through composer., (*8)
Either run, (*9)
php composer.phar require --prefer-dist krtv/yii2-jms-serializer
or add, (*10)
"krtv/yii2-jms-serializer": "~2.0.0"
to the require section of your composer.json., (*11)
Usage
To use this extension, simply add the following code in your application configuration:, (*12)
return [
// ...
'components' => [
'serializer' => [
'class' => 'krtv\yii2\serializer\Serializer',
'formats' => [
'json',
// XML is also available to use.
// 'xml',
],
// Uncomment if you would like to use handlers: http://jmsyst.com/libs/serializer/master/handlers
//
// 'handlers' => [
// 'datetime' => [
// 'defaultFormat' => 'c', // ISO8601
// ],
// 'my_handler' => [
// 'class' => 'app\\serializer\\handler\\MyHandler',
// ],
// // ...
// ],
// Uncomment if you would like to use different naming strategy for properties.
// "camel_case" is a default one. Available strategies are: "camel_case", "identical" and "custom".
//
// 'namingStrategy' => [
// 'name' => 'camel_case',
// 'options' => [
// 'separator' => '_',
// 'lowerCase' => true,
// ],
// ],
// Uncomment if you would like to configure class-metadata or enable cache.
//
// 'metadata' => [
// 'cache' => true,
// 'directories' => [
// [
// 'namespace' => 'Foo\\Bar',
// 'alias' => '@app/config/serializer/foo/bar',
// ],
// // ...
// ]
// ],
],
// ...
],
// ...
];
Now you can access to an krtv\yii2\serializer\Serializer
instance through \Yii::$app->serializer
or \Yii::$container->get('serializer')
., (*13)
Data serialization:, (*14)
echo $serializer->serialize(['foo' => 'bar'], 'json'); // {"foo": "bar"}