Tablica lub obiekt PHP lub inna złożona struktura danych nie może być transportowana, przechowywana ani używana w inny sposób poza uruchomionym skryptem PHP . Jeśli chcesz zachować tak złożoną strukturę danych poza jednym uruchomieniem skryptu, musisz ją serializować . Oznacza to po prostu umieszczenie struktury w „niższym wspólnym mianowniku”, który może być obsługiwany przez elementy inne niż PHP, takie jak bazy danych, pliki tekstowe, gniazda. Standardowa funkcja PHP serialize
jest po prostu formatem służącym do wyrażania takich rzeczy, serializuje strukturę danych do postaci łańcucha, która jest unikalna dla PHP i może zostać odwrócona do obiektu PHP za pomocą unserialize
. Istnieje jednak wiele innych formatów, takich jak JSON lub XML.
Weźmy na przykład ten powszechny problem:
Jak przekazać tablicę PHP do JavaScript?
PHP i Javascript mogą komunikować się tylko za pomocą łańcuchów. Możesz "foo"
bardzo łatwo przekazać ciąg znaków do Javascript. Możesz 1
bardzo łatwo przekazać ten numer do Javascript. Można przekazać wartości logiczne true
i false
łatwe do Javascript. Ale jak przekazać tę tablicę do Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Odpowiedzią jest serializacja . W przypadku PHP / Javascript JSON jest faktycznie lepszym formatem serializacji:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript może łatwo odwrócić to do rzeczywistej tablicy Javascript.
Jest to jednak równie ważna reprezentacja tej samej struktury danych:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Ale prawie tylko PHP go używa, nigdzie indziej nie ma wsparcia dla tego formatu.
Jest to jednak bardzo powszechne i dobrze obsługiwane:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Istnieje wiele sytuacji, w których trzeba przekazywać złożone struktury danych w postaci łańcuchów. Serializacja, reprezentująca dowolne struktury danych jako ciągi, rozwiązuje, jak to zrobić.