begin process at 2010 02 09 17:27:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :10 205 / 612

Auteur : Skreo

Ecrire un message privé
Site perso
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

Les Membres Club peuvent 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

 Sources de la même categorie

Source avec Zip Source avec une capture (SAISIE)FLASH ---> (TRAITEMENT)PHP --> (CONSULTATION)BASE DO... par devboman
Source avec Zip MESINFO SIMPLE par vbnino
Source avec Zip Source avec une capture NEWSLETTERS FLASH PHP SQL par 93skala
Source avec Zip Source avec une capture CARNET D'ADRESSES FLASH XML POUR DEBUTANTS - FONCTIONNE AVEC... par lwred
Source avec Zip Source avec une capture LIVRE D'OR EN FLASH AVEC BASE MYSQL ET PHP. INTÉRACTION FLAS... par jujuwiwi

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FULLSCROLLBAR: AS3 SCROLLBAR CLASS par JeMi
Source avec Zip Source avec une capture FLASH CS3 : FINAL CLASS "CLOCK" par top30
Source avec Zip Source avec une capture CLASS AS2 "CLICKMOUSE" : OBJET EVENT DE MOUSE CONTENTANT DES... par top30
Source avec Zip Source avec une capture LECTEUR MP3 AVEC LISTE DE LECTURE, STREAMING OU NON (COMPOSA... par eron
Source avec Zip XMLIZER : OBJET FONCTIONNANT SUR LE PRINCIPE DE "SERIALIZE()... par top30

Commentaires et avis

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

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

Peg'

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.

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'

Commentaire de fuckya le 13/11/2005 09:53:36

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

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 ^^

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 :)

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

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

Peg'

Commentaire de kingcobra le 13/11/2005 22:22:17

mdr ;)

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

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.

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....

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'

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.

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'

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.

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)

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 ^^

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

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 ^^

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.

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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales