[PHP] Session et objet :??:

Session et objet :??: [PHP] - PHP - Programmation

Marsh Posté le 04-09-2006 à 16:22:48    

Bonjour,
 
J'ai l'habitude code en java et de faire mes interfaces en JSF/Struts/etc... donc la on m'a demandé de faire une sorte de client en php mais j'ai un léger soucis. Je n'arrive pas à stocker mes objets dans ma session.
Je suis en php 5.0.5 (en partant du principe que je dois développer en php 5.0.x, j'ai pas le droit à 5.1.x)
et lorsque je fais :
 

Code :
  1. require '../classTest.php';
  2. session_start();
  3. $classTest = new ClassTest();
  4. $_SESSION['classTest'] = $classTest;
  5. $montest = 'test_session<br/>';
  6.         $_SESSION['montest'] = $montest;


 
puis dans la page d'apres :
       

Code :
  1. require '../classTest.php';
  2. session_start();
  3. $montest = $_SESSION['montest'];
  4. print('test chaine'.$montest.'<br/>');
  5. $classTest = $_SESSION['classTest'];
  6. print('test class :: '.$classTest->mykey.' '.$classTest->myword.'<br/>');


 
j'ai la variable $montest qui s'affiche correctement alors que ma classe ne me sort absoluement rien...
j'ai également tenté avec un session_register('classTest') et rien de nouveau (g placé register_global à On dans php.ini)
Y aurait-il une subtilité qui m'ai échappé ?
(ma classe de test ne contient que deux éléments publics mykey et myword)
 
edit : mise en page


Message édité par jan san kar le 04-09-2006 à 16:23:58
Reply

Marsh Posté le 04-09-2006 à 16:22:48   

Reply

Marsh Posté le 04-09-2006 à 16:30:55    

Si ca passe pas directement, alors il va faloir que tu sérialises ta classe.
Je ne sais plus quel est le nom de la fonction de chaque classe qui permet de choisir quels éléments de la classe sera sérialisé, mais je sais qu'il y en a une. Regarde donc dans la documentation si tu retrouves cette fonction là.

Reply

Marsh Posté le 04-09-2006 à 16:54:11    

ok je regarde ça j'aurais pensé que session_register le faisait tout seul :/

Reply

Marsh Posté le 04-09-2006 à 17:08:49    

pas besoin de sérialiser c'est automatique
 
- des valeurs sont affectées à mykey et myword ? sinon normal que ça n'affiche rien
- un message d'erreur ? (essaye error_reporting(E_ALL);, tu as peut être loupé des msg)
 
PS: utilise que $_SESSION, sans session_register et register_globals à off (sinon confusion)

Reply

Marsh Posté le 04-09-2006 à 17:20:10    

donc pour mykey et myword des valeurs sont ajoutés dans le constructeur (et je teste en affichant c'est valeur avant de les passer dans la session)
et je suis repassé à $_SESSION et register_global à off
mais ça ne m'affiche toujours rien. En notice il me dit que j'essaye d'obtenir des attributs d'un non-objet...
dans mon php.ini j'ai bien error_reporting à E_ALL et  je viens également de débloquer notice

Reply

Marsh Posté le 04-09-2006 à 17:21:58    

j'ai également testé le serialize sur ma classe il ne fait quasi rien dessus en faisant un print de la chaine j'obtiens un N;
donc si $_SESSION fait lui même la sérialisation le problème vient peut être de la, j'ai sans doute oublié de surcharger une méthode pour cette étape. Je repars chercher sur php.net :sweat:

Reply

Sujets relatifs:

Leave a Replay

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