Encoders
Warning: You are browsing the documentation for Symfony 2.x, which is no longer maintained.
Read the updated version of this page for Symfony 7.2 (the current stable version).
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
Two encoders are used in the example above:
- XmlEncoder to encode/decode XML
- JsonEncoder to encode/decode JSON
The XmlEncoder
This encoder transforms arrays into XML and vice versa.
For example, take an object normalized as following:
1
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 JsonEncoder
The JsonEncoder
is much simpler and is based on the PHP
json_encode and json_decode functions.