Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE SERIALIZER : SERIALIZE() ET UNSERIALIZE() IDENTIQUES À PHP


Information sur la source

Catégorie :Base de données Classé sous : class, serialize, unserialize, deserialize, serializer Niveau : Initié Date de création : 12/11/2005 Date de mise à jour : 12/11/2005 12:48:19 Vu / téléchargé: 9 223 / 588

Note :
5,83 / 10 - par 6 personnes
5,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (21)
Ajouter un commentaire et/ou une note

Description

La classe Serializer contient 2 fonction publiques :
serialize() et unserialize() identiques à php qui peuvent servirent à l'échange de données avec un fichier php

serialize : retourne une chaîne contenant une représentation linéaire d'une variable, pour stockage.
unserialize : prend une variable linéarisée et la convertit en variable (boolean, number, string, array ou object).

Exemple d'utilisation de cette source :
Vous voulez enregistrer un tableau Array de votre flash dans votre base de donnée. Il suffit de linéariser le tableau avec la fonction serialize() de la classe Serializer() et de l'envoyer à un fichier php qui l'enregistrera dans la base de donnée.
Pour récupérer le tableau, faite un fichier un php qui récupère la chaine linéarisée enregistrée dans la base, et qui l'envoi à la flash. Utilisez ensuite la fonction unserialize() de la classe Serializer pour récupérer le tableau.
De plus comme ces fonctions donnent les même résultats que celle de php, avant d'enregistrer la variable dans la base de donnée, un script php peut la délinéariser, la traiter (faire des vérifications par exemple) et la relinéariser.


J'espère que cette source vous servira à quelque chose et que j'ai que je l'ai assez commentée ;-)
 

Source

  • //Utilisation de la classe :
  • var serial:Serializer = new Serializer(); // On charge la classe Serializer
  • serial.serialize(variable); // renvoi variable linéarisée
  • serial.unserialize(chaine); // renvoi chaine délinéarisée
//Utilisation de la classe :
var serial:Serializer = new Serializer(); // On charge la classe Serializer

serial.serialize(variable); // renvoi variable linéarisée
serial.unserialize(chaine); // renvoi chaine délinéarisée

Conclusion

Vala utilisez cette source comme il vous plaira, et n'hésiter pas à laisser un commentaire.
Si vous utilisez cette source, ça serait sympa de mettre un tout ptit lien vers http://www.murties.com sur votre site ;-)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

12 novembre 2005 12:48:19 :
Ajout d'une explication

Commentaires et avis

signaler à un administrateur
Commentaire de pegase31 le 12/11/2005 13:22:49 administrateur CS

c'est vraiment se compliquer la vie pour pas grand chose ...

Peg'

signaler à un administrateur
Commentaire de Skreo le 13/11/2005 00:19:24

Pas très constructif comme commentaire.
Au contraire ça peut être très utile pour enregistrer et/ou traiter un tableau qui a beaucoup de cellules ou plusieurs dimensions, par exemple pour une map d'un jeu.

signaler à un administrateur
Commentaire de pegase31 le 13/11/2005 06:58:34 administrateur CS

Sauf que je ne vois pas l'interêt d'enregistrer les Types des variables. De plus pour un tableau, il suffit de faire un join() pour transformer ce dernieren variable et un split() de cette variable pour recréer un tableau ... et ceci à 1 ou plusieures dimensions !

Peg'

signaler à un administrateur
Commentaire de fuckya le 13/11/2005 09:53:36

Et pour les objects tu fais ca avec un split aussi ?

signaler à un administrateur
Commentaire de Skreo le 13/11/2005 10:34:02

L'interêt est de pouvoir retravailler les variables linéarisée avec php en utilisant les fonction unserialize() et serialize() incluses dans php.
Et il y a sûrement un interêt à enregistrer les types de variable si les concepteur de php l'on fait ! Par exemple on ne sait pas forcément quel type de variable on a à extraire, et je te rappelle que Flash est beaucoup plus strict qu'avant sur les types.
Et en effet ma fonction peux linéariser également des object, alors que split ne le peut pas ^^ (bien sûr tu peux faire un simple for(var:iString in objet){} )

Puis-je avoir des commentaires sur la qualité de ma source par exemple svp ?
merci ^^

signaler à un administrateur
Commentaire de fuckya le 13/11/2005 12:12:56

Bah moi je trouve ca très astucieux comme principe ;) Je suis surtout codeur PHP, je n'utilise pas Flash même si j'ai lu tout le bouquin de O'Reilly ^^

Je me demandais justement si cest fonctions existaient en Flash, maintenant c'est fait :D. Pour ma part j'utilise très souvent ces fonctions en PHP :)

signaler à un administrateur
Commentaire de pegase31 le 13/11/2005 14:33:59 administrateur CS

Ah ben si vous êtes des codeurs PHP, alors ...

Peg'

signaler à un administrateur
Commentaire de kingcobra le 13/11/2005 22:22:17

mdr ;)

signaler à un administrateur
Commentaire de top30 le 13/11/2005 23:32:00

Pour ce qui est de commenter la source, on peut commenter la "qualité" du code, pas le concept puisqu'il n est pas de toi. Le concept aurait put être original si tu avais "serializé" en XML par exemple.
Il n'y apas grand chose à changer à ton code pour que cela soit "efficace".

Pour ce qui est de ton code :
Là je crois que tu as du de "déchirer" la tête à le lire et le relire ! C'est tout saut claire.

Premier exemple :

private function replace ( ch1:String, ch2:String, texte:String ):String {
var tablotemp:Array=texte.split(ch1);
texte=tablotemp.join(ch2);
return texte;
}

devrait être :

private function replace ( oldTxt :String, newTxt :String, workingTxt :String ) :String {
return workingTxt.split(oldTxt).join(newTxt) ;
}

autre exemple :

if(typeof(serial)=="string"){  // Chaîne de caractères  de la forme s:4:"test";
retour+="s:"+serial.length+":\""+serial+"\";";

}else if(typeof(serial)=="number"){ // Nombre
if(serial%1==0) { // On vérifie si le nombre est un entier ou un décimal
retour+="i:"+serial+";"; // Nombre entier de la forme i:34;
}else{
retour+="d:"+serial+";"; // Nombre à décimales de la forme d:34;
}
}

est super lourd à lire, ca dvrait être :

switch ( sType ) {
case "string" :
return ("s:"+serial.length+":"+serial+";" ) ;
// Pas besoin de mettre entre guillements.
// puisque tu identifies le String avec ton "s".

case "number" :
var id :String = (serial%1==0 ? "i" : "d" ) ;
return ( id+":"+serial+";" ) ;

// etc...
}

Ce qui sous entend que tes fonctions sont "difficiles" à lire et donc à corriger !

Et pour finir, c'est dommage qu'il n'y ai pas la Class PHP car finalement tu n'as fait que la moitié du boulot et personne ne va avoir envie de se prendre la tête à créer une fonction ou Class PHP déserializant TA PROPRE facon de serializer.

J'espère que cela t'aidera un peu...

5/10

signaler à un administrateur
Commentaire de pegase31 le 13/11/2005 23:36:10 administrateur CS

Top, là, tu es mon dieu !!!! lol

Peg'

PS : "ironique" ? non, du tout, pour une fois, je suis trés sèrieux.

signaler à un administrateur
Commentaire de top30 le 14/11/2005 10:50:40

Attends Peg !
Je dis pas ca ni pour te soutenir, ni pour le casser !
je suis d'accord avec Skreo, que ton commentaire était pas des plus "constructif" !

Il est inconcevable d'imaginer un site SWF dynamique sans concept de "serialization" entre un language Server et Flash ! Sinon tu devrais "parser" ton retour de script à chaque utlisation de "loadVars" et là c'est SUPER galère. D'où l'avantage d'une Classe.

Le fait que tu ne "comprennes" pas le pourquoi d'une sérialization ( C'est ton commentaire qui me fait dire cela ) démontres que tu n'es pas encore passé au stade d'utiliser Flash comme outil d'affichage de données dynamiques.

Tiens en passant tu t'es mis à l'AS2, car l'AS3 pointe le bout de son nez....

PS : Même si je laisse pas beaucoup de commentaires, je lis toujours tous les commentaires des sources déposées. Et si tu voulais bien me faire une faveur, ca serait d'arrêter de TOUJOURS chialer sur la cadence des animations. C'est vraiment mais vraiment le dernier des sourcis. Le prend pas mal mais c'est lour de toujours lire même "coment".

A plus....

signaler à un administrateur
Commentaire de pegase31 le 14/11/2005 13:49:47 administrateur CS

c'est certain qu'il y aura toujours une différence entre les "gros programmeux" et les graphistes ...
Je ne vais pas relancer la polémique, car ça ne sert à rien.

Peg'

signaler à un administrateur
Commentaire de top30 le 14/11/2005 15:57:54

Je sent dans ton commentaire comme une certainne "Supériorité"...
"...les gros programmeux" et les graphistes, comme si ces derniers étaient plus "fins" !!!!

Si c'est pas voulu la diplomatie n'est donc pas ton fort...

Et pour ton info, comme tu as pu le constaster je suis aussi graphiste ! Mais si tu veux faire du Flash, il faut assi suivre son évolution.

signaler à un administrateur
Commentaire de pegase31 le 14/11/2005 16:23:32 administrateur CS

lol, non, pas de "supèriorité", juste que j'ai constaté que beaucoup de programmeux venant de pho, c++, vb, cobold, fortran, pascal, etc... viennent ici en pensant maîtriser Flash et que certains ont même réinventés des fonctions déjà existantes (souviens-toi du "toLowerCase").
Mais pour ce qui est de l'AS2, je n'en ai aucune utilité car mes animations restent plutôt basiques et que je m'en tires trés bien avec de simples "split" et "join" pour envoyer au serveur mon quadrillage de terrain de jeu et que je n'ai pas besoin de "serialyze" pour enregistrer mes données. Après, que certains pensent ça utile, je n'en doute pas. Mais combiens de personnes utilisant Flash vont en avoir besoin ? N'est-ce pas tuer une mouche à coup de Bazooka ?

Après, le résultat est assez flagrand : il te reste à voir une source un minimum graphique comme celle de snakeeater1 (http://www.flashkod.com/code.aspx?ID=34447) où il y a 3 aplats et 2 dégradés un minimum fluide et que l'on donne comme commentaire : "GENIAL FRANCHEMENT, JE SAIS PAS QUOI DIRE , TU EST UN MAITRE DANS L'ART DU GRAPHISME." (Bali_Balo)
Ca prouve bien que tout le monde ici (ou alors une majorité) attendent des trucs un minimum graphique.

Je veux biens que Flash et l'ActionScript deviennent un language de programmation super complexe avec pleins de nuances, mais qu'on n'oublies pas sa fonction première : le multimedia. Et un "média", c'est pas que du code ....

Donc je suis désolé, mais je n'arrêterais pas de "TOUJOURS chialer sur la cadence des animations" comme tu dis, car pour moi c'est la base première de Flash. Que vous le compreniez ou pas.

Peg'

signaler à un administrateur
Commentaire de BananaTree le 14/11/2005 20:33:24

slt,

je ne veux pas entrer dans votre polémique, j'interviens juste au sujet des cadences.

moi je pronne une cadence de 12 FPS quasi systematiquement ! (étrangement, il se trouve que c la cadence "officieusement officielle" de macromedia.)
J'irai même plus loin : avec as2, les évènements EnterFrame devraient en toute logique être requalifiés en deprecated. (comprend qui veut).

++ et bon code.

signaler à un administrateur
Commentaire de Mafassure le 14/11/2005 20:45:51 administrateur CS

Tiens c'est nouveau ça : bananatree est d'accord avec Macromédia....

comme quoi ;O)

signaler à un administrateur
Commentaire de Skreo le 18/11/2005 21:16:39

Merci TOP30 !

En effet le code que tu proposes peut sembler plus lisible à beaucoup de personnes, mais pour moi c'est tout aussi lisible. Question d'habitudes ^^

Et tu dis que je n'ai fait que la moitier du boulot en ayant pas fait la classe pour php. Mais non j'ai tout fait, puisque les fonctions serialize et unserialize sont déjà incluses dans php !
Si c'était mon propre système, j'aurais justement fait un système en xml ou même beaucoup plus optimisé (comme j'ai fait pour la version 2 de mon site, qui n'est d'ailleurs pas encore sortie). Mais à ce moment là il faut créer la fonction équivalente en php.
Et comme il est plus simple d'utilise une fonction déjà existante dans php, et de plus qui prend beaucoup moins de ressources qu'une fonction de linéarisation qu'on inventerait, j'ai choisi de faire une copie de serialize() et unserialize() pour flash ;-)

Evidemment, pour les graphistes ou pour ceux qui ne développent pas d'applications flash communiquant avec un server web, cette source n'a pas grand interêt ^^

signaler à un administrateur
Commentaire de xorax le 19/09/2006 12:52:20

j'ai mieu!!!
pourquoi une classe quand on peut juste déclarer 2 fonctions, comme en php ?
http://www.xorax.info/blog/programmation/40-javascript-serialize-php.html

signaler à un administrateur
Commentaire de Skreo le 19/09/2006 18:19:46

T'es à coté de la plaque toi... Déjà dans le lien que tu passes c'est du JS, et en plus c'est pas simplement 2 appels de foncitons, mais regarde dans les fichiers js,  les code est assez gros ^^

signaler à un administrateur
Commentaire de OphidiaN le 07/12/2007 16:32:36

Hello. Bah j'avoue c'est un peu ce que je cherchais, vu que je voulais transférer par XMLSocket des objets (sans utiliser des usines à gaz comme red5 ou autre). Cela dit une petite info trouvée en décompilant un swf utilisant remoting : ils ont aussi codé un système de sérialisation (malheureusement différent du serialize() php) mais assez intéressant. On le retrouve dans mx.data.binding, une classe ObjectDumper :)

ex:

var p = new Object();
p.a=6;
p.arr=new Array('test','lol');
p.b="salut";

trace(mx.data.binding.ObjectDumper.toString(p, true, true,true))

trace:
{a: 6, arr: ["test", "lol"], b: "salut"}

la syntaxe d'un objet en flash en réalité.

je ne sais pas si amfphp utilise ce système pour transférer.. mais ça serait intéressant de voir ça.

signaler à un administrateur
Commentaire de pou151 le 30/01/2009 02:23:35 9/10

Super merci :P

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

DataBase Class - Besoin d'une traducteur de code source [ par _benjy ] Salut a tous,je sais pas si vous avez vu, mais j'avais fait une p'tit class pour mysql, j'suis en train de bosser dessus pour l'etendre a tt type de d Initiés : class AS 2 & createEmptyMovieClip [ par SuperDevy ] Salut les Flashkodeurs,J'ai une class Chariot extends MovieClip que j'appelle en faisant attachMovie (propriété dans la bibliothéque)L'objet créé est surcharge d'un constructeur [ par cedricici ] bonjour, En AS2, Peut on surcharger le constructeur de la Class MovieClip ??en gros, je veux créer des objets d'une nouvelle class hérité de Moviecli Comment faire une fonction "pause" avec la class Sound [ par sofianemad ] Salut les gens, j'essaye de faire un bouton pause pour mon lecteur mp3 en flash, mais j'y arrive vraiment pas apres plusieurs essais, j'aimerais faire PopUp Manager [ par _benjy ] SalutJe cherche depuis une heure comment changer la class constructrice du contenu d'un popupmananger.je m'expliquele popupmanager permet d'inactiv&#2 Personnalisation de PopUp Manager [ par _benjy ] SalutJe cherche depuis une heure comment changer la class constructrice du contenu d'un popupmananger.je m'expliquele popupmanager permet d'inactiv&#2 re gotoAndPlay impossible... [ par stown ] désolé de reposter mais sa me soule! et la serieux sa m'énérve je compren pas pk sa marche pas!voila en gros ce que j'ai:sur la 1e Class Buton [ par crilun ] crilun Salut,     j'ai commencé le flash il y a 4 jours et la je bloque sur un truc , j'ai crée mes propres bouttons qui son server oregano : erreur dataparser.as [ par dozhwal ] en essayant l'exemple fourni avec le serveur "Oregano" et en testant a partir de flash, l'exemple marche bien. Par contre, en publiant, flash detecte fonction enterFrame dans une class [ par atchoumdu51 ] Bonjour,  je définis une class qui crée un movieClip et j'aimerais que celui ci réalise une action régulierement, sans passer


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.