session et POO

Mammouth du PHP | 693 Messages

13 mars 2009, 21:56

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 ?

Eléphant du PHP | 141 Messages

17 mars 2009, 12:37

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

ViPHP
ViPHP | 1136 Messages

17 mars 2009, 13:37

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.