Кодировщики
Кодировщики
Кодировщики по существу превращают массивы в форматы и наоборот. Они реализуют EncoderInterface для шифрования (массива в формат) и DecoderInterface для дешифровки (формата в массив).
Вы можете добавлять новые кодировщики в экземпляр Сериализатора, используя его второй аргумент конструктора:
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);
Встроенные кодировщики
В примере выше используется два кодировщика:
- XmlEncoder, чтобы шифровать/дешифровать XML
- JsonEncoder, чтобы шифровать/дешифровать JSON
XmlEncoder
Этот кодировщик трансформирует массивы в XML и наоборот.
Например, возьмите объект, нормализованный следующим образом:
1
array('foo' => array(1, 2), 'bar' => true);
XmlEncoder
зашифрует этот объект таким образом:
1 2 3 4 5 6
<?xml version="1.0"?>
<response>
<foo>1</foo>
<foo>2</foo>
<bar>1</bar>
</response>
Имейте в виду, что этот кодировщик рассмотрит ключи, начинающиеся с @
в качестве
атрибутов:
1 2 3 4 5 6 7
$encoder = new XmlEncoder();
$encoder->encode(array('foo' => array('@bar' => 'value')));
// вернёт:
// <?xml version="1.0"?>
// <response>
// <foo bar="value" />
// </response>
JsonEncoder
JsonEncoder
намного проще и основывается на функциях PHP
json_encode и json_decode.