Passage de type objet a un parametre

cs_mael974 Messages postés 108 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 10 mars 2011 - 11 avril 2008 à 01:33
cs_mael974 Messages postés 108 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 10 mars 2011 - 11 avril 2008 à 12:15
Bonjour a tous,
mon pbl est le suivant (je suis en php 5) : j'ai un objet (type objet) que je souhaite passer en paramtre pour pouvoir ensuite utiliser tous les methodes de cette objet, je procede dc comme suit:

----index.php -----
include 'joueur.php';
//creation des joueurs
$j1 = new joueur('toto',1);

 //echo $j1->affiche_Main();
 
 echo '<form name=teste  method=get action=jeux.php?pos='.$j1;
echo '
 
-----jeux.php ----

$pos= $_GET['pos'];
 echo $pos->affiche_Main();

ce dernier m'affiche comme je m'y attendais l'erreur suivante:
Fatal error : Call to a member function affiche_Main() on a non-object in C:\wamp\www\belote\jeux.php on line 4

cependant dans l'url, il reconnait bien le type objet:

=Object http://localhost/belote/jeux.php?pos=Object

Quelqun pourrais me donner une piste pour que je puisse avancer?
avec tous mes remerciements

> MaEl <

3 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
11 avril 2008 à 02:04
Salut,

Pour passer un objet dans une variable $_POST ou $_GET, il faut d'abord le linéariser :
http://fr.php.net/serialize

Pour le récupérer depuis la variable dans laquelle il a été stocké sous forme linéaire, il faut le délinéariser : http://fr.php.net/unserialize

Enfin, pour contrôler parfaitement le comportement de ton objet lors de la linéarisation, tu peux lui définir la méthode magique __wakeup(), et lors de la délinéarisation, avec la méthode magique __sleep().
=> http://fr.php.net/manual/fr/language.oop5.magic.php

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
11 avril 2008 à 08:51
salut
c'est une des solution pour le passer par get ou post

c'est une des solutions les plus moches en fait...

quand on regarde ca de plus pres, tout les objets ne sont pas serializables, pourtant, on peut appliquer la fonction sur tout objet, ca ne provoque pas d'erreur de typage (typage et php, c'est merveilleux...)
le modele de java sur le serialize, c'est assez fantastique a cote : on a une interface qui dit si un objet peut-etre serialize ou non...
j'avais imagine (et poste) une source qui avait le meme genre d'interfaces pour json.

Bref, comme on peut faire n'importe quoi actuellement en php, avec json et serialize, il semble preferable de laisser la machine faire (c'est a dire de ne pas appeller soi meme ces fonctions) placer en SESSION l'objet par exemple.
0
cs_mael974 Messages postés 108 Date d'inscription jeudi 2 juin 2005 Statut Membre Dernière intervention 10 mars 2011
11 avril 2008 à 12:15
Salut,
merci de votre reponse. je pensais au faite passer l'objet en SESSION. Ms par curiosité je vais tester cette fonction serialize que [auteur/NEIGEDHIVER/924195.aspx neigedhiver]   ma suggerer. En tt cas merci a vous !!!

> MaEl <
0