2008-11-03 11 views

Répondre

9

En ce qui concerne PHP, la raison pour laquelle je choisis XML par rapport à JSON est que même en PHP 5, il n'y a pas d'API officiellement supportée pour la traversée. Vous pouvez encoder, et vous pouvez décoder, et c'est tout. Il n'y a pas de validation, pas de moyen efficace pour traverser les paires clé/valeur, et tout-en-tout, très peu de soutien pour cela. Ne vous méprenez pas, vous pouvez simplement utiliser une structure de boucle foreach, mais c'est vraiment encombrant. JSON a été présenté comme un excellent format d'échange de données car JavaScript permet de comprendre facilement la structure lexicale. Donc quand vous passez de PHP en JavaScript, c'est génial, mais quand vous passez de JavaScript à PHP, ou de PHP à PHP, alors JSON n'est pas le meilleur choix pour l'échange de données.

+0

Je ne suis pas sûr que je suis 100% d'accord avec cela. Sauf si vous parlez d'une énorme quantité de données, itérer sur un tableau associatif en PHP n'est pas fastidieux du tout. Sans compter qu'il y a des tonnes d'outils et de fonctions disponibles pour la manipulation de tableau. –

+0

Je parle surtout par rapport à SimpleXML avec le support XPath. Même PHP DOM XML (qui n'est pas vraiment facile à utiliser), offre encore un peu plus de flexibilité qu'une approche personnalisée pour la traversée JSON. Pour la validation, vous obtenez au moins la DTD, mais je ne me souviens pas de la dernière fois que j'ai utilisé cela. –

5

J'irais moi-même avec JSON, simplement parce que XML est très lourd et trop difficile à analyser. JSON est petit et soigné, et économise ainsi sur la bande passante, et devrait également accélérer les temps de réponse simplement parce qu'il est plus facile à générer, plus rapide à transmettre et plus rapide à décoder.

2

Quelle que soit la méthode choisie, lorsque vous choisissez de sérialiser les données pour les E/S, le mécanisme de sérialisation doit être transparent et remplaçable. Si vous trouvez que JSON ne fonctionne pas pour vous, vous devriez simplement pouvoir échanger le sérialiseur que vous utilisez à l'avant et à l'arrière, et vos structures de données restent les mêmes. Cela dit, la plupart des tableaux de données que je transmets sont simplement de gros arbres de valeurs-clés. J'ai trouvé plus facile de lire mes structures de données brutes lorsqu'elles ne sont pas enveloppées dans la sérialisation XML.

1

En ce qui concerne les performances de file_get_contents() par rapport à cURL, je crois que cURL sera légèrement plus rapide. Pour votre application, vous pouvez exécuter quelques benchmarks rapides pour comparer les deux approches.

Plus important encore, je préférerais cURL parce que file_get_contents() ne fonctionnera pas dans des environnements PHP qui ont un niveau plus élevé de sécurité mis en œuvre (par exemple, allow_url_fopen paramètre est généralement désactivée). Si votre application ne sera exécutée que sur votre propre environnement (que vous contrôlez), file_get_contents() fonctionnera bien, mais sinon j'irais avec cURL pour la portabilité.