Page 1 sur 1

session et POO

Posté : 13 mars 2009, 21:56
par orgerix
Bonjour,

je débute dans la POO, et la je me heurte au problème des sessions. En PHP les variables de sessions sont dans un tableau, accessible n'importe ou. Je me suis demandé s'il n'était pas possible de l'inclure dans un objet. J'ai donc fait cette classe, mais, d'une part, ca m'a pas l'air très propre, et d'autre part, ca ne règle pas le problème que je ne suis toujours pas obligé d'utiliser l'objet pour manipuler les variable de session.
<?php
class Session {
	static private $instance=FALSE;
	function __construct() {
		if(self::$instance==FALSE) {
			session_start();
			self::$instance=TRUE;
		}
		else {
			throw new Exception ('session déjà initialisée');
		}
	}

	function getValue($ey) {
		if (isset($_SESSION[$key])) {
			return $_SESSION[$key];
		}
		else {
			return NULL;
		}
	}
	
	function setValue($key,$value) {
		$_SESSION[$key]=$value;
	}
}
?>
Enfin, une dernière question. Est il possible d'avoir dans un objet une variable en lecture public et en écriture privée ?

Posté : 17 mars 2009, 12:37
par julian
Pour ta seconde question, tu ne peux pas définir un membre de classe seulement en lecture. Par contre, tu peux la déclarer private et ne définir qu'un accesseur en lecture.

Pour la première question, je ne saisis pas vraiment l'intérêt. Le mécanisme des sessions PHP reste assez simple d'utilisation. Par contre, tu peux très bien créer une classe 'Parametres' qui te permet de gérer des paramètres en faisant abstraction du mode de passage ($_POST, $_GET, $_SESSION).

Posté : 17 mars 2009, 13:37
par stopher
Salut ,

Une solution pour passer outre les session , est d'utiliser le design pattern registry , et pour le rendre persistant , le sérialiser / desérialiser et le sauvegarder ( fichier / DDb ... )

Sinon , tu peux modifier le mécanisme de gestion des sessions via session_set_save_handler()

Un petit exemple ici

Ch.