Zend_Json-Objects.xml 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <sect1 id="zend.json.objects">
  2. <title>Obiekty JSON</title>
  3. <para>
  4. Kiedy kodujemy obiekt PHP jako JSON, wszystkie publiczne właściwości
  5. tego obiektu zostaną zakodowane w obiekcie JSON.
  6. </para>
  7. <para>
  8. JSON nie pozwala na referencje obiektów, więc musisz uważać abyś
  9. nie próbował kodować obiektów z rekurencyjnymi referencjami. Jeśli masz
  10. problemy z rekurencją, metody <code>Zend_Json::encode()</code> oraz
  11. <code>Zend_Json_Encoder::encode()</code> przyjmują opcjonalny drugi
  12. parametr, określający czy ma być sprawdzana rekurencja; jeśli obiekt
  13. jest kodowany drugi raz, zostanie wyrzucony wyjątek.
  14. </para>
  15. <para>
  16. Odkodowanie obiektów JSON sprawia dodatkową trudność, ponieważ obiekty
  17. Javascript prawie dokładnie odpowiadają tablicom asocjacyjnym PHP.
  18. Jedni proponują aby przekazywać identyfikator klasy, a następnie
  19. tworzyć instancję obiektu tej klasy i wypełniać ją parami klucz/wartość
  20. obiektu JSON; inni ostrzegają, że mogłoby to być istotną luką w bezpieczeństwie.
  21. </para>
  22. <para>
  23. Domyślnie <code>Zend_Json</code> odkoduje obiekty JSON jako tablice
  24. asocjacyjne. Jednak jeśli chcesz odebrać obiekt, możesz to określić
  25. w ten sposób:
  26. </para>
  27. <programlisting role="php"><![CDATA[
  28. // Odkoduj obiekty JSON jako obiekty PHP
  29. $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
  30. ]]>
  31. </programlisting>
  32. <para>
  33. Wszystkie dekodowane obiekty są zwracane jako obiekty klasy
  34. <code>StdClass</code> z właściwościami odpowiadającymi parom
  35. klucz/wartość z obiektu JSON.
  36. </para>
  37. <para>
  38. Zalecane jest aby to programista decydował o tym w jaki sposób mają być
  39. odkodowane obiekty JSON. Jeśli powinien być utworzony obiekt konkretnego
  40. typu, może być on utworzony w kodzie aplikacji, a następnie wypełniony
  41. wartościami odkodowanymi za pomocą <code>Zend_Json</code>.
  42. </para>
  43. </sect1>
  44. <!--
  45. vim:se ts=4 sw=4 et:
  46. -->