Pretvornik JSON Object v Serialized PHP Object
Z našim vsestranskim orodjem za serializacijo in deserializacijo PHP preprosto serializirajte in deserializirajte podatke v PHP. Ta spletni pripomoček je idealen za razvijalce, ki želijo pretvoriti kompleksne podatkovne strukture v nize za shranjevanje in jih obnoviti v prvotno obliko. Zagotovite natančno in učinkovito obdelavo podatkov brez namestitve programske opreme. Izboljšajte svoj razvojni potek za PHP s tem uporabniku prijaznim in zanesljivim orodjem.
Kaj počne PHP Serializer
PHP Serializer pretvori JSON v nizovno obliko PHP serialize() in serializirane nize pretvori nazaj v oblikovane vrednosti JSON. Dolžine nizov v serializirani obliki štejejo bajte, zato ima vrednost z naglašenimi črkami večjo dolžino kot število znakov.
Pri deserializaciji nikoli ne nastanejo objekti vaših razredov: objekt se vrne kot __PHP_Incomplete_Class, pri čemer se ime razreda ohrani v __PHP_Incomplete_Class_Name, kar prepreči izvajanje kode iz nezaupljivega vnosa. Objekti JSON postanejo polja PHP z nizi kot ključi.
Delani primeri
JSON v serializirani niz
a:4 je polje s štirimi vnosi, vsak niz pa vsebuje svojo dolžino v bajtih.
- Vhod
{"name": "Ada", "age": 36, "admin": true, "tags": ["php", "json"]}- Rezultat
a:4:{s:4:"name";s:3:"Ada";s:3:"age";i:36;s:5:"admin";b:1;s:4:"tags";a:2:{i:0;s:3:"php";i:1;s:4:"json";}}
Serializiran niz v JSON
Zürich ima 6 črk, vendar 7 bajtov v UTF-8, zato je njegova dolžina s:7.
- Vhod
a:2:{s:4:"city";s:7:"Zürich";s:3:"zip";s:4:"8001";}- Rezultat
{ "city": "Zürich", "zip": "8001" }
Serializiran objekt
Objekt ni znova ustvarjen kot pravi primerek stdClass. Njegovo ime razreda in lastnosti so prikazani kot podatki.
- Vhod
O:8:"stdClass":1:{s:2:"id";i:7;}- Rezultat
{ "__PHP_Incomplete_Class_Name": "stdClass", "id": 7 }
Kode serializiranih tipov
| Koda | Tip | Primer |
|---|---|---|
N | null | N; |
b | Logična vrednost, 1 za true in 0 za false | b:1; |
i | Celo število | i:36; |
d | Število s plavajočo vejico | d:0.5; |
s | Niz z dolžino v bajtih | s:3:"PHP"; |
a | Polje s številom vnosov ter pari ključ-vrednost | a:1:{i:0;s:1:"x";} |
O | Objekt z dolžino imena razreda, imenom razreda in številom lastnosti | O:8:"stdClass":0:{} |
Pogosta vprašanja
How do I serialize data in PHP?
Za serializacijo podatkov v PHP vnesite podatkovno strukturo (polje, objekt ali skalarno vrednost) v predvideno polje in kliknite gumb »Serializiraj«. Orodje pretvori kompleksne podatkovne strukture v niz za shranjevanje z uporabo serializacijskega protokola za PHP ter ustvari zapis, ki ga lahko shranite v datoteke ali zbirke podatkov oziroma pošljete prek omrežij.
How do I deserialize data in PHP?
Za deserializacijo podatkov v PHP vnesite serializirani niz (ki se običajno začne z oznakami oblik, kot so a:, s: ali O:) v predvideno polje in kliknite gumb »Deserializiraj«. Orodje niz pretvori nazaj v prvotno podatkovno strukturo ter obnovi polja, objekte in vrednosti natanko v obliki, kot so jo imeli pred serializacijo.
Why is serialization useful in PHP?
Serializacija pretvori kompleksne podatkovne strukture v nize za shranjevanje. Omogoča trajno shranjevanje podatkov v datotekah ali zbirkah podatkov, prenos podatkov prek omrežij, shranjevanje podatkov sej, mehanizme predpomnjenja, vsebine sporočilnih vrst in ohranjanje stanja objektov med zahtevami. Deserializacija obnovi izvirne podatke za nadaljnjo uporabo.
What data types can be serialized in PHP?
PHP serializira nize, cela števila, števila s plavajočo vejico, logične vrednosti, polja, objekte in vrednosti NULL. Ohrani ključe polj, lastnosti objektov (javne, zaščitene, zasebne), ugnezdene strukture in podatkovne tipe. Vendar virov (kot so povezave z zbirkami podatkov ali datotečni ročaji) ni mogoče serializirati, zato jih je treba obravnavati posebej.
Ali so pri deserializaciji podatkov kakšni varnostni vidiki?
Da, pri deserializaciji nezaupanja vrednih podatkov lahko pride do napadov z vstavljanjem objektov PHP. Napadalci lahko izdelajo zlonamerne serializirane nize, ki sprožijo izvajanje kode prek čarobnih metod (__wakeup, __destruct). Nikoli ne izvajajte unserialize na uporabniških vnosih ali zunanjih podatkih brez preverjanja. Za nezaupanja vredne podatke uporabite JSON ali določite omejitve allowed_classes.
Can I serialize and deserialize custom objects?
Da, PHP serializira objekte po meri in ohrani vse njihove lastnosti ter vrednosti. Za pravilno obnovitev objektov pa morajo biti definicije razredov naložene pred deserializacijo. Uporabite samodejno nalaganje, vključite datoteke razredov ali za prilagojeno vedenje serializacije implementirajte čarobni metodi __sleep() in __wakeup().
What's the difference between serialize() and JSON?
PHP serialize() ohrani natančne podatkovne tipe, zasebne/zaščitene lastnosti in podatke o razredu objekta, vendar deluje samo v PHP. JSON je neodvisen od jezika, berljiv, primeren za splet in deluje v vseh jezikih, vendar izgubi zasebne lastnosti in ne ohrani natančnih tipov PHP. Uporabite serialize() za shranjevanje, namenjeno samo PHP; JSON pa za API-je in interoperabilnost.
How do I use serialization for session data?
PHP samodejno serializira podatke seje ($_SESSION) za shranjevanje med zahtevami. Ko v seje shranite polja ali objekte, jih PHP serializira v datoteke ali zbirke podatkov in jih nato deserializira ob naslednjem nalaganju strani. Tako se ohranijo uporabniško stanje, nakupovalne košarice in avtentikacija med obiski strani.
Can serialized data be stored in databases?
Da, serializirane podatke lahko shranite v TEXT ali stolpce zbirke podatkov tipa BLOB. Vendar serializirani podatki onemogočajo učinkovito poizvedovanje, indeksiranje in iskanje. Serializacijo uporabite za celotne objekte, shranjene kot enote; kadar morate poizvedovati po posameznih poljih ali ohranjati relacije med podatki, pa raje uporabite JSON ali normalizirane tabele.
What does serialized PHP data look like?
Serializirani podatki uporabljajo predpone za oblike: s:5:"hello" (niz), i:42 (celo število), a:2:{...} (polje), O:4:"User" (objekt). Števila označujejo dolžino ali število elementov. Oblika je kompaktna, vendar ni berljiva za ljudi. Z našim orodjem lahko za odpravljanje napak in obdelavo podatkov pretvarjate med berljivo obliko JSON in serializirano obliko PHP.
How do I debug serialized data?
Deserializirajte podatke in preverite njihovo strukturo, uporabite print_r() ali var_dump() za deserializirane vrednosti, pretvorite jih v JSON zaradi berljivosti, preverite nepopolno serializacijo ali poškodbe, preverite razpoložljivost razredov za predmete in uporabite naše orodje za vizualizacijo in razumevanje kompleksnih serializiranih struktur.
Can I serialize closures or anonymous functions?
Standardna serializacija PHP ne podpira zaključkov. Za to funkcionalnost uporabite pakete, kot sta Opis Closure ali Laravelov SerializableClosure. Običajne funkcije in metode v predmetih je mogoče serializirati, če so opredeljene v razredih, vendar je za anonimne funkcije potrebna posebna obravnava.
What are magic methods for serialization?
__sleep() se izvede pred serializacijo in vrne polje lastnosti za serializacijo (uporabno za izključitev nekaterih podatkov). __wakeup() se izvede po deserializaciji za inicializacijo. __serialize() in __unserialize() (PHP 7.4+) omogočata več nadzora. Implementirajte jih za prilagojeno vedenje serializacije v svojih razredih.
How do I migrate from serialized data to JSON?
Obstoječe podatke PHP deserializirajte, pretvorite v polja ali objekte stdClass in jih nato JSON kodirajte. Posodobite kodo, da namesto serialize()/unserialize() uporablja json_encode()/json_decode(). JSON je varnejši, preglednejši in združljivejši, vendar pri tem izgubite zasebne lastnosti in natančno ohranitev tipov, ki ju omogoča serializacija.