Existe-t-il un moyen intégré de savoir si une variable de session donnée est un objet sérialisé? Dites que je récupère une valeur comme $ _SESSION ['foo'], mais je ne sais pas si c'était à l'origine une chaîne ou s'il s'agit d'un objet sérialisé. Existe-t-il un moyen de vérifier, ou une fois que sérialisé PHP voit juste une chaîne comme une chaîne comme une chaîne?Vérification des objets sérialisés
Répondre
C'est une idée fausse très répandue que vous devez sérialiser manuellement les objets avant de les mettre en session. Ce n'est pas le cas. Vous pouvez simplement assigner une instance d'objet à un emplacement dans $_SESSION
, et PHP le sérialisera automagiquement et le désérialisera pour vous, entre les requêtes.
Une chaîne est une chaîne. Je pense que le mieux que vous puissiez faire est de simplement essayer de le désérialiser, et si cela fonctionne, cela fonctionne. Si ce n'est pas le cas, ce n'est pas le cas.
La seule autre option serait d'utiliser une regex pour voir si elle "ressemble" à un objet sérialisé. Exécution juste unserialize()
là-dessus pourrait cependant être plus facile.
Vous pouvez utiliser is_a ... Retirez-le de la session et voyez, vous avez juste besoin de connaître le nom de la classe à vérifier.
if (is_a($_SESSION['foo'], 'UserInfoObject')) {
// We have one
}
Il ressemble a une méthode PHP5 plus facile:
if ($_SESSION['foo'] instanceof UserInfoObject) {
// We have one
}
- 1. OCaml: Type Vérification des objets
- 2. Générique DuplicateValidationRule (Vérification des objets métier pour les doublons)
- 3. Vérification de type sur les objets Caché
- 4. persist java.util.Properties comme objet sérialisés à l'aide JDO/DataNucleus
- 5. Comparer deux objets avec une vérification de null
- 6. Comment stocker des informations dans un fichier XML avec des valeurs sérialisés
- 7. Vérification de l'état des machines?
- 8. Solution de vérification des liens
- 9. Création modèle d'empreintes digitales persona numérique à partir des données sérialisés
- 10. Comment faire un champ transitoire, afin que les objets Java ne soient pas sérialisés lors de l'utilisation de marshal?
- 11. Quels types de retour peuvent être sérialisés par JQuery AJAX?
- 12. Objets mocking contenant des sous-objets avec des jacquements Rhino
- 13. Chiffrer des objets
- 14. AS3 Filtrage des objets
- 15. Arrondi des objets DateHeure
- 16. Sérialisation des objets
- 17. réutilisation des objets TableCellEditor
- 18. Affichage des objets associés
- 19. Objets et gestion des erreurs en PHP
- 20. jQuery.post() À l'aide des données de formulaire sérialisés et objet personnalisé dans la soumission
- 21. Vérification par programme des e-mails Outlook
- 22. Vérification des baies RAM (API Windows)
- 23. Vérification des dépendances externes dans vb.net
- 24. Vérification efficace des entités dupliquées possibles
- 25. Vérification des formes chevauchantes dans WPF
- 26. Vérification des résultats de la requête sqlite
- 27. Vérification des données utilisateur avant chaque action
- 28. Vérification des homologues avec libcurl et SSL
- 29. Vérification des attributs de fichier en python
- 30. Vérification des fichiers pour les erreurs
Vraiment? Je ne peux pas croire que je ne le savais pas! – Wilco
En fait, après quelques recherches, je ne suis pas sûr que ce soit correct. Sauf si vous utilisez session_register() sur une instance donnée, il ne sera pas automatiquement sérialisé lors de l'enregistrement dans la session. Je vais essayer de confirmer avec un cas de test pour être sûr à 100% et poster ce que je découvre. – Wilco
Non, c'est tout à fait correct. Et 'session_register' est une ancienne et obsolète façon d'utiliser les sessions - Restez à l'écart de cela. – troelskn