Symfony 4 was released on November 30th.
Update now to the best Symfony ever!

You are browsing the Symfony 4 documentation, which changes significantly from Symfony 3.x. If your app doesn't use Symfony 4 yet, browse the Symfony 3.4 documentation.

Encoders

4.0 version

Encoders

Encoders basically turn arrays into formats and vice versa. They implement EncoderInterface for encoding (array to format) and DecoderInterface for decoding (format to array).

You can add new encoders to a Serializer instance by using its second constructor argument:

1
2
3
4
5
6
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;

$encoders = array(new XmlEncoder(), new JsonEncoder());
$serializer = new Serializer(array(), $encoders);

Built-in Encoders

The Serializer component provides built-in encoders:

The JsonEncoder

The JsonEncoder encodes to and decodes from JSON strings, based on the PHP json_encode and json_decode functions.

The XmlEncoder

This encoder transforms arrays into XML and vice versa.

For example, take an object normalized as following:

array('foo' => array(1, 2), 'bar' => true);

The XmlEncoder will encode this object like that:

1
2
3
4
5
6
<?xml version="1.0"?>
<response>
    <foo>1</foo>
    <foo>2</foo>
    <bar>1</bar>
</response>

Be aware that this encoder will consider keys beginning with @ as attributes:

1
2
3
4
5
6
7
$encoder = new XmlEncoder();
$encoder->encode(array('foo' => array('@bar' => 'value')));
// will return:
// <?xml version="1.0"?>
// <response>
//     <foo bar="value" />
// </response>

The YamlEncoder

This encoder requires the Yaml Component and transforms from and to Yaml.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.