Zend_Json-Objects.xml 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <sect1 id="zend.json.objects">
  2. <title>JSON objekty</title>
  3. <para>
  4. Keď sa serializuje PHP objekt na JSON objekt všetky verejné vlastnosti
  5. sú zahrnuté vo výslednom objekte.
  6. </para>
  7. <para>
  8. JSON nedovoľuje referencie na objekty a teda je potrebné dať pozor na objekty
  9. s rekurzívnymi referenciami. Ak máte problém s rekurziou, môžete nastaviť
  10. druhy nepovinný parameter pri volaniach <code>Zend_Json::encode()</code> a
  11. <code>Zend_Json_Encoder::encode()</code>, ktorý zisťuje rekurziu - ak je objekt
  12. serializovaný druhý raz bude vyvolaná výnimka.
  13. </para>
  14. <para>
  15. Deserializácia JSON objektov nie je jednoduchá, pretože Javascript objekty
  16. sú podobné asociatívnym poliam v PHP. Niekto navrhuje odovzdať meno triedy
  17. a následnej vytvoriť jej inštanciu, ktorá bude obsahovať vlastnosti a hodnoty
  18. z JSON objektu - ostatným sa to zdá ako značná bezpečnostná diera.
  19. </para>
  20. <para>
  21. <code>Zend_Json</code> primárne vracia asociatívne pole, ak chcete aby bol
  22. vrátený objekt, môžete to urobiť nasledovne:
  23. </para>
  24. <programlisting role="php"><![CDATA[<?php
  25. // Decode objects as objects
  26. $phpNative = Zend_Json::decode($encodedValue, Zend_Json::TYPE_OBJECT);
  27. ?>]]></programlisting>
  28. <para>
  29. Všetky objekty sú takto deserializované ako <code>StdClass</code> a ich
  30. vlastnosti zodpovedajú vlastnostiam a ich hodnotám z JSON objektu.
  31. </para>
  32. <para>
  33. Zend Framework prenecháva rozhodnutie ako nakladať z deserializovanými objektami
  34. na vývojára. Ak je potrebné vytvoriť špecifický objekt, stále je to možné
  35. urobiť priamo v kóde a použiť hodnoty získane z <code>Zend_Json</code>
  36. </para>
  37. </sect1>
  38. <!--
  39. vim:se ts=4 sw=4 et:
  40. -->