J'ai une compréhension de base de sérialiser (je le rencontre souvent lorsque je migre des installations WordPress) et je viens de découvrir json_encode .
Étant donné que la sérialisation pose tellement de problèmes pour remplacer les chaînes dans la base de données (par exemple, l'édition directe d'un champ optinos), pourquoi WordPress préfère-t-il sérialiser à json_encode (apparemment similaire), qui n'insère pas la longueur de la chaîne dans la valeur stockée.
Ma première pensée a été que cela pourrait apporter des avantages en termes de sécurité ou de vérification d'erreur. WordPress ignorera l'option si les longueurs de chaîne sont incorrectes .. mais une explication qualifiée m'intéresse :)
Exécutez cet exemple:
$query = new WP_Query();
var_dump( $query );
var_dump( unserialize( serialize( $query ) ) );
var_dump( json_decode( json_encode( $query ) ) );
WP_Query
correct est recréé.stdClass
.En un mot, la sérialisation fait partie intégrante de PHP et a beaucoup de synergie avec la manipulation des données qu'elle contient. JSON est un format indépendant de la langue, pratique pour les systèmes qui communiquent entre eux, mais qui est loin d’être complet et qui ne peut pas faire les choses dans PHP, ce que la sérialisation fait sans arrière-pensée.
Voir ici pour une bonne discussion sur le raisonnement derrière ne pas le changer en JSON: