Zend_Json-Objects.xml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. -->