Un tableau ou un objet PHP ou autre structure de données complexe ne peut être transporté, stocké ou utilisé d'une autre manière en dehors d'une exécution du script PHP . Si vous voulez persister une structure de données aussi complexe au-delà d'une seule exécution d'un script, vous devez sérialiser il. Cela signifie simplement mettre la structure dans un "plus petit dénominateur commun" qui peut être géré par d'autres choses que PHP, comme des bases de données, des fichiers texte, des sockets. La fonction PHP standard serialize
est juste un format pour exprimer une telle chose, il sérialise une structure de données dans une représentation de chaîne de caractères qui est unique à PHP et qui peut être inversée en un objet PHP en utilisant unserialize
. Il existe cependant de nombreux autres formats, comme JSON ou XML.
Prenons par exemple ce problème courant :
Comment puis-je passer une commande PHP tableau à Javascript ?
PHP et Javascript ne peuvent communiquer que par des chaînes de caractères. Vous pouvez passer la chaîne "foo"
très facilement à Javascript. Vous pouvez passer le nombre 1
très facilement en Javascript. Vous pouvez passer les valeurs booléennes true
y false
facilement à Javascript. Mais comment passer ce tableau à Javascript ?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
La réponse est sérialisation . Dans le cas de PHP/Javascript, JSON est en fait le meilleur format de sérialisation :
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript peut facilement inverser cela en un tableau Javascript réel.
Il s'agit pourtant d'une représentation tout aussi valable de la même structure de données :
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Mais pratiquement seul PHP l'utilise, il y a peu de support pour ce format ailleurs.
C'est pourtant très courant et bien supporté :
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Il y a beaucoup de situations où vous devez passer structures de données complexes sous forme de chaînes de caractères. La sérialisation, qui consiste à représenter des structures de données arbitraires sous forme de chaînes de caractères, permet de résoudre ce problème.