| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <sect1 id="zend.json.objects">
- <title>Объекты JSON</title>
- <para>
- Когда объекты PHP закодировываются в JSON, все публичные свойства этого
- объекта будут закодированы в объект JSON.
- <!--
- When encoding PHP objects as JSON, all public properties of that object
- will be encoded in a JSON object.
- -->
- </para>
- <para>
- JSON не поддерживает ссылки на объекты, поэтому следите за тем, чтобы
- не закодировывать объекты с рекурсивными ссылками. Если вы имеете дело
- с рекурсией, то в вызове методов <code>Zend_Json::encode()</code> и
- <code>Zend_Json_Encoder::encode()</code> можно установить второй
- необязательный параметр для проверки на рекурсию; если один и тот же
- объект подвергается сериализации дважды, то будет сгенерировано
- исключение.
- <!--
- JSON does not allow object references, so care should be taken not to
- encode objects with recursive references. If you have issues with
- recursion, <code>Zend_Json::encode()</code> and
- <code>Zend_Json_Encoder::encode()</code> allow an optional second
- parameter to check for recursion; if an object is serialized twice, an
- exception will be thrown.
- -->
- </para>
- <para>
- Декодирование объектов JSON представляет собой дополнительную сложность,
- так как объекты Javascript скорее соответствуют ассоциативным массивам в
- PHP. Одни советуют передавать идентификатор класса, экземпляр этого
- класса должен быть создан и заполнен парами ключ/значение объекта JSON;
- другие считают, что это может представлять собой серьезную угрозу
- безопасности.
- <!--
- Decoding JSON objects poses an additional difficulty, however, since
- Javascript objects correspond most closesly to PHP's associative array.
- Some suggest that a class identifier should be passed, and an object
- instance of that class should be created and populated with the
- key/value pairs of the JSON object; others feel this could pose a
- substantial security risk.
- -->
- </para>
- <para>
- По умолчанию <code>Zend_Json</code> будет декодировать объекты JSON как
- ассоциативные массивы. Но если вы хотите получить объект, то можете
- указать это:
- <!--
- By default, <code>Zend_Json</code> will decode JSON objects as
- associative arrays. However, if you desire an object returned, you can
- specify this:
- -->
- </para>
- <programlisting language="php"><![CDATA[<?php
- // Декодировать объект как объект
- $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
- ?>]]></programlisting>
- <para>
- Любые объекты, декодированные таким образом, возвращаются как
- объекты <code>StdClass</code> со свойствами, соответствующими парам
- ключ/значение в нотации JSON.
- <!--
- Any objects thus decoded are returned as <code>StdClass</code> objects
- with properties corresponding to the key/value pairs in the JSON
- notation.
- -->
- </para>
- <para>
- Рекомендацией Zend Framework является то, что разрабочик
- должен сам принимать решение, как декодировать объект JSON. Если
- должен быть создан объект определенного типа, он может быть создан в
- коде разработчика и заполнен значениями, декодированными с помощью
- <code>Zend_Json</code>.
- <!--
- The recommendation of Zend Framework is that the individual
- developer should decide how to decode JSON objects. If an object of a
- specified type should be created, it can be created in the developer
- code and populated with the values decoded using <code>Zend_Json</code>.
- -->
- </para>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|