[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Json-Objects.xml
blob05e2054113266fb9e821bd6da55114f2fd7705e3
1 <sect1 id="zend.json.objects">
2     <title>Объекты JSON</title>
3     <para>
4         Когда объекты PHP закодировываются в JSON, все публичные свойства этого
5         объекта будут закодированы в объект JSON.
6 <!--
7         When encoding PHP objects as JSON, all public properties of that object
8         will be encoded in a JSON object.
9 -->
10     </para>
11     <para>
12         JSON не поддерживает ссылки на объекты, поэтому следите за тем, чтобы
13         не закодировывать объекты с рекурсивными ссылками. Если вы имеете дело
14         с рекурсией, то в вызове методов <code>Zend_Json::encode()</code> и
15         <code>Zend_Json_Encoder::encode()</code> можно установить второй
16         необязательный параметр для проверки на рекурсию; если один и тот же
17         объект подвергается сериализации дважды, то будет сгенерировано
18         исключение.
19 <!--
20         JSON does not allow object references, so care should be taken not to
21         encode objects with recursive references. If you have issues with
22         recursion, <code>Zend_Json::encode()</code> and
23         <code>Zend_Json_Encoder::encode()</code> allow an optional second
24         parameter to check for recursion; if an object is serialized twice, an
25         exception will be thrown.
26 -->
27     </para>
28     <para>
29         Декодирование объектов JSON представляет собой дополнительную сложность,
30         так как объекты Javascript скорее соответствуют ассоциативным массивам в
31         PHP. Одни советуют передавать идентификатор класса, экземпляр этого
32         класса должен быть создан и заполнен парами ключ/значение объекта JSON;
33         другие считают, что это может представлять собой серьезную угрозу
34         безопасности.
35 <!--
36         Decoding JSON objects poses an additional difficulty, however, since
37         Javascript objects correspond most closesly to PHP's associative array.
38         Some suggest that a class identifier should be passed, and an object
39         instance of that class should be created and populated with the
40         key/value pairs of the JSON object; others feel this could pose a
41         substantial security risk.
42 -->
43     </para>
44     <para>
45         По умолчанию <code>Zend_Json</code> будет декодировать объекты JSON как
46         ассоциативные массивы. Но если вы хотите получить объект, то можете
47         указать это:
48 <!--
49         By default, <code>Zend_Json</code> will decode JSON objects as
50         associative arrays. However, if you desire an object returned, you can
51         specify this:
52 -->
53     </para>
54     <programlisting language="php"><![CDATA[<?php
55 // Декодировать объект как объект
56 $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
57 ?>]]></programlisting>
58     <para>
59         Любые объекты, декодированные таким образом, возвращаются как
60         объекты <code>StdClass</code> со свойствами, соответствующими парам
61         ключ/значение в нотации JSON.
62 <!--
63         Any objects thus decoded are returned as <code>StdClass</code> objects
64         with properties corresponding to the key/value pairs in the JSON
65         notation.
66 -->
67     </para>
68     <para>
69         Рекомендацией Zend Framework является то, что разрабочик
70         должен сам принимать решение, как декодировать объект JSON. Если
71         должен быть создан объект определенного типа, он может быть создан в
72         коде разработчика и заполнен значениями, декодированными с помощью
73         <code>Zend_Json</code>.
74 <!--
75         The recommendation of Zend Framework is that the individual
76         developer should decide how to decode JSON objects. If an object of a
77         specified type should be created, it can be created in the developer
78         code and populated with the values decoded using <code>Zend_Json</code>.
79 -->
80     </para>
81 </sect1>
82 <!--
83 vim:se ts=4 sw=4 et:
84 -->