Utilité de la sérialisation ??

Utilité de la sérialisation ?? - PHP - Programmation

Marsh Posté le 05-12-2006 à 17:52:37    

Boujour à tous,
 
Je ne sais plus dans quel post j'ai lu que la personne sérialisait un objet et l'insérait ensuite en base.  
Quelqu'un pourrait-il me dire dans quel but cela est intéressant ?
 
Merci d'avance,
Lionel.

Reply

Marsh Posté le 05-12-2006 à 17:52:37   

Reply

Marsh Posté le 05-12-2006 à 17:57:27    

tu peux sauvegarder un objet avec toutes ses variables par cette méthode, et ainsi le récupérer tel quel ;)

Reply

Marsh Posté le 05-12-2006 à 18:49:23    

chani_t a écrit :

tu peux sauvegarder un objet avec toutes ses variables par cette méthode, et ainsi le récupérer tel quel ;)


 
Euh... oui, je veux bien, mais dans quel but ?  :heink:  
Peux-tu me donner un exemple concret où l'on aurait besoin de sérialiser un objet et de l'insérer en base ?
 
En fait, sauf erreur, il me semble que la personne que je cite dans mon premier message, avait créée un objet DVD dont elle renseignait plusieurs attributs via le constucteur. J'ai compris que c'était un tru du genre :
 

Code :
  1. class DVD
  2. {
  3.      private $title;
  4.      private $length;
  5.      public function __construct($title,$length)
  6.      {
  7.           $this->title = $title;
  8.           $this->length = $length;
  9.      }
  10.      etc...
  11. }
  12. $dvd1 = new DVD("titre1",120);
  13. $dvd2 = new DVD("titre2",120);
  14. etc...
  15. $str1 = serialize($dvd1);
  16. insertion de $str1 en Bdd...


 
Vu cet exemple, je me demandais donc pourquoi ne pas créer une table "DVD" avec tous les champs adéquats ?!  :??:

Reply

Marsh Posté le 05-12-2006 à 23:10:28    

Si tu créais une table DVD avec les champs adéquats, tu serais obligé en retour, de recréer tes objets en lisant ta base de données. Un objet sérialisé, quand tu le "désérialises",ça donne un objet directement. Plutot que de sauvegarder la description de l'objet détaillée, tu sauvegardes directement l'objet en lui meme

Reply

Marsh Posté le 06-12-2006 à 08:51:28    

Mouais, c'est peut-être pas super de sérializer un truc pareil :/ Si t'as une recherche à faire par exemple, c'est carrément naze

Reply

Marsh Posté le 06-12-2006 à 08:56:28    

ba tout dépend de l'utilité, de comment tu renseigne ta base de données.
Mais ça peut être util de récupérer un objet tel qu'il était, notament pour le faire persister tout au long d'une session... cepepndant j'aurais utilisé une variable de session pour enregistrer la sérialisation dedans.
 
Toujours est il que ça a un intérêt dans certain cas :D

Reply

Marsh Posté le 06-12-2006 à 10:37:42    

C'est super stupide dans 99% des cas, quand même...[:pingouino]
Ta base de données elle ne peut plus te servir qu'en php, avec des conneries comme ça...et impossible d'utiliser la moitié des fonctionnalités d'un sgbd en y collant des horreurs de ce genre...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2006 à 11:01:57    

skeye a écrit :

C'est super stupide dans 99% des cas, quand même...[:pingouino]
Ta base de données elle ne peut plus te servir qu'en php, avec des conneries comme ça...et impossible d'utiliser la moitié des fonctionnalités d'un sgbd en y collant des horreurs de ce genre...:o


 
ba c clair que si tu ne met que l'objet, ya pas grand intérêt, maintenant si tu y rajoute certain champs bien choisi... pourquoi pas

Reply

Marsh Posté le 06-12-2006 à 11:05:22    

bof, non.:o
Une bdd est là pour stocker des données, pas pour pourrir tes données avec des trucs spécifiques à ton appli, normalement.:o
A part pour une implémentation perso d'un système de sessions je classe ça dans la catégorie "design pourri".[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2006 à 11:07:09    

:D... je classe ça dans le pourquoi pas, mais aussi dans le "pas chez moi :D" ;)

Reply

Marsh Posté le 06-12-2006 à 11:07:09   

Reply

Marsh Posté le 06-12-2006 à 11:08:48    

bah pour que ce soit utilisable autrement que pour des sessions il faut dupliquer des données, voilà pourquoi pas.[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 06-12-2006 à 11:19:03    

pis là vu l'exemple, autant tout mettre dans une bdd et faire un fetch_object. Le résultat est identique et c'est autrement plus mieux

Reply

Marsh Posté le 06-12-2006 à 17:51:17    

FlorentG a écrit :

Mouais, c'est peut-être pas super de sérializer un truc pareil :/ Si t'as une recherche à faire par exemple, c'est carrément naze


 
Exactement ! C'était là où je voulais en venir.
Je ne comprenais vraiment pas l'utilité de stocker un pareil objet en base si on ne peut pas faire de recherches...
 
Sinon, stocke un objet en base pour s'en reservir plus tard en tant que tel, pourquoi pas effectivement. Même si j'aurai préféré le stocker plutôt en Session.
 
En tous cas, merci à tous d'avoir donné votre avis !

Reply

Marsh Posté le 11-12-2006 à 22:25:33    

La sérialisation n'est pas forcément utilisée pour stocker un objet en base de données.  
Elle peut être utile si par exemple tu fais du xml-rpc entre 2 applications php distantes.
Tu serialises l'objet.
Tu l'envoies encodé en xml via xml rpc.
L'autre coté reçoit l'objet en parsant le xml et en le désérialisant.
 
L'avantage évident est que cela évite de devoir extraire les données de l'objet d'un coté. De la même manière, cela évite de l'autre coté à devoir instancier un objet puis lui assigner les attributs récupérés via xml rpc.
 
Pour ceux qui ne savent pas ce qu'est XML RPC : http://fr.wikipedia.org/wiki/XML-RPC
 
Son petit frère le nouveau : http://fr.wikipedia.org/wiki/SOAP

Reply

Marsh Posté le 12-12-2006 à 08:24:21    

euh soap c'est loin d'être nouveau.[:pingouino]
et utiliser la sérialisation php pour ça, lolilol.[:marc]
Le but du jeu c'est de pouvoir réutiliser le résultat dans un autre langage, à la base, hein...[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2006 à 09:57:48    

SOAP et XML-RPC sont utilisable dans de très nombreux langages, il suffit d'implémenter les spécifications de leur API.
De plus, leurs API sont déjà implémenter dans de nombreux langages, et SOAP et XML-RPC étant orientés SOA il est évident qu'il sont réutilisables, c'est le but même de leur existence.
Libre à toi de faire ce que tu veux. Mais si tu réfutes constamment les explications qu'on te donne, c'est certain que tu auras du mal à avancer. :jap:

Message cité 1 fois
Message édité par vanadium le 12-12-2006 à 09:59:02
Reply

Marsh Posté le 12-12-2006 à 10:02:58    

vanadium a écrit :

SOAP et XML-RPC sont utilisable dans de très nombreux langages, il suffit d'implémenter les spécifications de leur API.
De plus, leurs API sont déjà implémenter dans de nombreux langages, et SOAP et XML-RPC étant orientés SOA il est évident qu'il sont réutilisables, c'est le but même de leur existence.
Libre à toi de faire ce que tu veux. Mais si tu réfutes constamment les explications qu'on te donne, c'est certain que tu auras du mal à avancer. :jap:


 
Tu es conscient que tu réponds complètement à coté de la plaque, quand même?[:autobot]
Quand on parle de sérialisation en php, c'est via serialize() et unserialize().
Qui n'utilisent absolument pas un format xml.[:dawa]
Et qui donc ne servent à rien dans le contexte de soap/xml-rpc.[:dawa]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-12-2006 à 10:03:47    

'fin bref avant de vouloir me donner des explications commence par maitriser le sujet mieux que moi...[:marc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-12-2006 à 16:23:19    

pot2yaourt a écrit :

Boujour à tous,
 
Je ne sais plus dans quel post j'ai lu que la personne sérialisait un objet et l'insérait ensuite en base.  
Quelqu'un pourrait-il me dire dans quel but cela est intéressant ?
 
Merci d'avance,
Lionel.


 
Dans osCommerce, ils font de la serialisation pour mémoriser ton panier, certes pas dans la base de données, mais dans un cookie. Ainsi, on peut placer un array serialisé dans le cookie, et le récupérer tel quel. :)
On déserialise le cookie et on a a nouveau le cookie. C'est pariculièrement interressant dans ce cas puisqu'un array de produits par ex est très facile à manipuler. Et puis de toute façon, je ne vois pas d'autre solution pour stocker ton panier dans un cookie sans serialiser/deserialiser. (Si tu fais implode, explode pour manipuler le contenu du cookie ça revient à le serialiser/deserialiser !)

Message cité 1 fois
Message édité par vanadium le 14-12-2006 à 16:23:35
Reply

Marsh Posté le 16-12-2006 à 17:11:44    

Pour le moment, je crois que la seule fois où j'ai utilisé la sérialisation, c'était pour stocker un array dans une constante [:tinostar]


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 17-12-2006 à 13:50:10    

vanadium a écrit :

Dans osCommerce, ils font de la serialisation pour mémoriser ton panier, certes pas dans la base de données, mais dans un cookie. Ainsi, on peut placer un array serialisé dans le cookie, et le récupérer tel quel. :)
On déserialise le cookie et on a a nouveau le cookie. C'est pariculièrement interressant dans ce cas puisqu'un array de produits par ex est très facile à manipuler. Et puis de toute façon, je ne vois pas d'autre solution pour stocker ton panier dans un cookie sans serialiser/deserialiser. (Si tu fais implode, explode pour manipuler le contenu du cookie ça revient à le serialiser/deserialiser !)


On peut très bien imaginer une table cart_contents(id_user, id_cart, id_article), avec un cookie contenant `id_user` [:ooooo]


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed