Prevodník JSON Object na Serialized PHP Object
Jednoducho serializujte a deserializujte údaje v PHP pomocou nášho univerzálneho nástroja PHP na serializáciu a deserializáciu. Táto online pomôcka je ideálna pre vývojárov, ktorí potrebujú previesť zložité dátové štruktúry na reťazce vhodné na ukladanie a obnoviť ich pôvodnú podobu. Zabezpečte presné a efektívne spracovanie údajov bez inštalácie softvéru. Zlepšite svoje vývojárske pracovné postupy v PHP pomocou tohto používateľsky prívetivého a spoľahlivého nástroja.
Často kladené otázky
Ak chcete serializovať údaje v PHP, zadajte svoju dátovú štruktúru (pole, objekt alebo skalárnu hodnotu) do príslušného poľa a kliknite na tlačidlo Serialize. Nástroj prevedie zložité dátové štruktúry na reťazec vhodný na ukladanie pomocou serializačného protokolu PHP, čím vytvorí reprezentáciu, ktorú možno uložiť do súborov či databáz alebo prenášať cez siete.
Ak chcete deserializovať údaje v PHP, zadajte serializovaný reťazec (zvyčajne začína indikátormi formátu, ako sú a:, s: alebo O:) do príslušného poľa a kliknite na tlačidlo Deserialize. Nástroj prevedie reťazec späť na pôvodnú dátovú štruktúru a presne obnoví polia, objekty a hodnoty do podoby spred serializácie.
Serializácia prevádza zložité dátové štruktúry na reťazce vhodné na ukladanie. Umožňuje trvalé ukladanie údajov v súboroch alebo databázach, prenos údajov cez siete, ukladanie údajov relácií, mechanizmy ukladania do vyrovnávacej pamäte, obsah správ vo frontoch a zachovanie stavu objektov medzi požiadavkami. Deserializáciou sa obnovia pôvodné údaje na ďalšie použitie.
PHP serializuje reťazce, celé čísla, čísla s pohyblivou desatinnou čiarkou, logické hodnoty, polia, objekty a hodnoty NULL. Zachováva kľúče polí, vlastnosti objektov (public, protected, private), vnorené štruktúry aj dátové typy. Zdroje (napríklad databázové pripojenia alebo otvorené súbory) však serializovať nemožno a vyžadujú osobitné spracovanie.
Áno, pri deserializácii nedôveryhodných údajov môže dôjsť k útoku typu vkladanie objektov PHP. Útočníci môžu vytvoriť škodlivé serializované reťazce, ktoré spustia kód prostredníctvom magických metód (__wakeup, __destruct). Nikdy nedeserializujte používateľský vstup ani externé údaje bez overenia. Pre nedôveryhodné údaje použite JSON alebo nastavte obmedzenie allowed_classes.
Áno, PHP serializuje vlastné objekty a zachováva všetky ich vlastnosti aj hodnoty. Pred deserializáciou však musia byť načítané definície tried, aby sa objekty správne obnovili. Použite automatické načítanie, zahrňte súbory tried alebo implementujte magické metódy __sleep() a __wakeup() na vlastné správanie pri serializácii.
PHP serialize() zachováva presné dátové typy, súkromné/chránené vlastnosti a informácie o triede objektu, ale funguje iba v PHP. JSON je nezávislý od jazyka, čitateľný, vhodný pre web a funguje vo všetkých jazykoch, no nezachováva súkromné vlastnosti ani presné typy PHP. Na ukladanie výhradne v PHP použite serialize(); pre API a interoperabilitu použite JSON.
PHP automaticky serializuje údaje relácie ($_SESSION) na uloženie medzi požiadavkami. Keď do relácií uložíte polia alebo objekty, PHP ich serializuje do súborov alebo databáz a pri nasledujúcich načítaniach stránok ich deserializuje. Vďaka tomu možno zachovať stav používateľa, nákupný košík a overenie používateľa počas návštev stránok.
Áno, serializované údaje môžete ukladať do stĺpcov TEXT alebo BLOB v databáze. Serializované údaje však znemožňujú efektívne dopytovanie, indexovanie a vyhľadávanie. Serializáciu použite na ukladanie celých objektov ako samostatných celkov, no ak potrebujete dopytovať jednotlivé polia alebo zachovať vzťahy medzi údajmi, uprednostnite JSON alebo normalizované tabuľky.
Serializované údaje používajú predpony formátu: s:5:"hello" (reťazec), i:42 (celé číslo), a:2:{...} (pole), O:4:"User" (objekt). Čísla označujú dĺžku alebo počet. Formát je kompaktný, ale nie je čitateľný pre ľudí. Pomocou nášho nástroja môžete pri ladení a manipulácii s údajmi prevádzať medzi čitateľným formátom JSON a serializovaným formátom PHP.
Deserializujte údaje, aby ste skontrolovali ich štruktúru, použite print_r() alebo var_dump() na deserializované hodnoty, preveďte ich do JSON pre čitateľnosť, skontrolujte neúplnú serializáciu alebo poškodenie, overte dostupnosť tried pre objekty a použite náš nástroj na vizualizáciu a pochopenie zložitých serializovaných štruktúr.
Štandardná serializácia PHP nepodporuje uzávery. Na túto funkcionalitu použite balíky ako Opis Closure alebo Laravel SerializableClosure. Bežné funkcie a metódy v objektoch možno serializovať, ak sú definované v triedach, ale anonymné funkcie vyžadujú špeciálne zaobchádzanie.
__sleep() sa spúšťa pred serializáciou a vracia pole vlastností, ktoré sa majú serializovať (užitočné na vylúčenie určitých údajov). __wakeup() sa spúšťa po deserializácii na inicializáciu. __serialize() a __unserialize() (od verzie PHP 7.4) poskytujú väčšiu kontrolu. Implementujte ich na vlastné správanie pri serializácii vo svojich triedach.
Deserializujte existujúce údaje PHP, preveďte ich na polia/objekty stdClass a potom ich zakódujte do JSON. Upravte kód tak, aby používal json_encode()/json_decode() namiesto serialize()/unserialize(). JSON je bezpečnejší, čitateľnejší a kompatibilnejší, prídete však o súkromné vlastnosti a presné zachovanie typov, ktoré poskytuje serializácia.