JSON Object į Serialized PHP Object Konverteris
Lengvai serializuokite ir deserializuokite duomenis PHP naudodami universalų įrankį PHP Serializer and Deserializer. Šis internetinis įrankis puikiai tinka programuotojams, norintiems sudėtingas duomenų struktūras paversti saugomomis eilutėmis ir atkurti pradinę jų formą. Tiksliai ir efektyviai tvarkykite duomenis neįdiegę jokios programinės įrangos. Pagerinkite PHP kūrimo darbo eigą naudodami šį patogų ir patikimą įrankį.
Dažnai užduodami klausimai
Norėdami serializuoti duomenis PHP, į pateiktą lauką įveskite duomenų struktūrą (masyvą, objektą arba skaliarinę reikšmę) ir spustelėkite mygtuką „Serialize“. Įrankis sudėtingas duomenų struktūras paverčia saugoma eilute pagal PHP serializavimo protokolą. Tokį atvaizdavimą galima išsaugoti failuose ar duomenų bazėse arba perduoti tinklais.
Norėdami deserializuoti duomenis PHP, į pateiktą lauką įveskite serializuotą eilutę (paprastai prasidedančią formato žymenimis, pavyzdžiui, a:, s: arba O:) ir spustelėkite mygtuką „Deserialize“. Įrankis eilutę paverčia pradine duomenų struktūra ir tiksliai atkuria iki serializavimo buvusius masyvus, objektus bei reikšmes.
Serializavimas sudėtingas duomenų struktūras paverčia saugomomis eilutėmis. Taip galima nuolat saugoti duomenis failuose ar duomenų bazėse, perduoti juos tinklais, saugoti seanso duomenis, naudoti podėlio mechanizmus, kurti pranešimų eilių duomenis ir išsaugoti objektų būseną tarp užklausų. Deserializavus atkuriami pradiniai duomenys, kad juos būtų galima toliau naudoti.
PHP serializuoja eilutes, sveikuosius ir slankiojo kablelio skaičius, logines reikšmes, masyvus, objektus bei NULL reikšmes. Išsaugomi masyvų raktai, objektų savybės (viešosios, apsaugotosios ir privačiosios), įdėtinės struktūros bei duomenų tipai. Tačiau išteklių (pavyzdžiui, duomenų bazės jungčių ar failų rankenėlių) serializuoti negalima, todėl juos reikia tvarkyti atskirai.
Taip, deserializuojant nepatikimus duomenis gali įvykti PHP objektų įterpimo atakos. Užpuolikai gali sukurti kenkėjiškas serializuotas eilutes, kurios per magiškuosius metodus (__wakeup, __destruct) paleidžia kodą. Niekada nedeserializuokite naudotojo įvesties ar išorinių duomenų jų nepatikrinę. Nepatikimiems duomenims naudokite JSON arba apribokite leidžiamas klases.
Taip, PHP serializuoja pasirinktines klases ir išsaugo visas jų savybes bei reikšmes. Tačiau prieš deserializuojant turi būti įkeltos klasių apibrėžtys, kad objektai būtų atkurti teisingai. Naudokite automatinį įkėlimą, įtraukite klasių failus arba įgyvendinkite magiškuosius metodus __sleep() ir __wakeup(), kad galėtumėte valdyti pasirinktinį serializavimą.
PHP serialize() išsaugo tikslius duomenų tipus, privačiąsias ir apsaugotąsias savybes bei objekto klasės informaciją, bet veikia tik PHP. JSON nepriklauso nuo programavimo kalbos, yra lengvai skaitomas ir pritaikytas žiniatinkliui, veikia visose kalbose, bet neišsaugo privačiųjų savybių ir tikslių PHP tipų. Naudokite serialize() tik PHP skirtoje saugykloje, o JSON – API ir sąveikumui.
PHP automatiškai serializuoja seanso duomenis ($_SESSION), kad jie būtų išsaugoti tarp užklausų. Kai seansuose saugote masyvus ar objektus, PHP juos serializuoja į failus ar duomenų bazes, o vėliau, įkeliant puslapį, deserializuoja. Taip naudotojo būsena, pirkinių krepšeliai ir autentifikacija išsaugomi peržiūrint skirtingus puslapius.
Serializuotus duomenis galima saugoti duomenų bazės TEXT arba BLOB stulpeliuose. Tačiau taip saugomų duomenų negalima veiksmingai užklausti, indeksuoti ar ieškoti. Serializavimą naudokite visiems objektams saugoti kaip vienetams, o kai reikia užklausti atskirus laukus ar palaikyti duomenų sąryšius, rinkitės JSON arba normalizuotas lenteles.
Serializuoti duomenys turi formato priešdėlius: s:5:"hello" (eilutė), i:42 (sveikasis skaičius), a:2:{...} (masyvas), O:4:"User" (objektas). Skaičiai nurodo ilgį arba elementų skaičių. Šis formatas glaustas, bet žmogui sunkiai skaitomas. Derindami ir tvarkydami duomenis, naudokite mūsų įrankį, kad konvertuotumėte lengvai skaitomą JSON ir PHP serializuotą formatą.
Deserializuokite duomenis, kad patikrintumėte jų struktūrą, naudokite print_r() arba var_dump() deserializuotoms reikšmėms, konvertuokite į JSON, kad juos būtų galima skaityti, patikrinkite, ar serializavimas nėra užbaigtas arba pažeistas, patikrinkite objektų klasių prieinamumą ir naudokite mūsų įrankį, kad vizualizuotumėte ir suprastumėte sudėtingas serializuotas struktūras.
Standartinis PHP serializavimas nepalaiko uždarymų. Šiai funkcijai atlikti naudokite tokius paketus kaip Opis Closure arba Laravel SerializableClosure. Įprastas objektų funkcijas ir metodus galima serializuoti, jei jie apibrėžti klasėse, tačiau anoniminėms funkcijoms reikia specialaus tvarkymo.
__sleep() vykdomas prieš serializavimą ir grąžina serializuotinas savybes (naudinga norint kai kuriuos duomenis neįtraukti). __wakeup() vykdomas po deserializavimo, kad būtų atliekamas inicijavimas. __serialize() ir __unserialize() (nuo PHP 7.4) suteikia daugiau valdymo galimybių. Įgyvendinkite šiuos metodus, jei norite pasirinktinai valdyti klasių serializavimą.
Deserializuokite turimus PHP duomenis ir konvertuokite juos į masyvus ar stdClass objektus, tada užkoduokite naudodami JSON. Atnaujinkite kodą ir vietoj serialize()/unserialize() naudokite json_encode()/json_decode(). JSON yra saugesnis, lengviau skaitomas ir suderinamas, tačiau nebeišsaugomos privačiosios savybės ir tikslūs tipai, kuriuos išsaugo serializavimas.