Zend Framework et les sessions
By Geoffrey on Saturday 12 August 2006, 20:31 - Coding - Permalink
Bon voilà, j'ai commencé le développement d'un projet, et j'ai décidé d'utiliser le Zend Framework (pour des raisons que je détaillerais dans un autre billet si ça vous interresse). Après mise en application du tutoriel de Chris, Un premier problème s'est posé à moi: l'intégration des sessions. Après quelques recherches, on peut trouver un blog développé avec ZF. Me ruant sur la partie d'admin, je découvre a ma grande stupeur des session_start() incrustés a chaque méthode du controlleur, un peu comme ça:
class AdminController extends Zend_Controller_Action {
function indexAction() {
session_start();
}
function postAction() {
session_start();
}
}
Ce n'est évidemment pas une solution acceptable. J'ai opté pour ma part pour une surcharge de la classe Zend_Controller_Action, avec un appel à session_start() dans le constructeur:
abstract class My_Controller_Action extends Zend_Controller_Action {
public function __construct() {
session_start();
}
}
class AdminController extends My_Controller_Action {
function indexAction() {
// code
}
}
Bon là, la problèmatique de base est déjà résolue, mais on peut aller plus loin, et ajouter un destructeur:
abstract class My_Controller_Action extends Zend_Controller_Action {
public function __construct() {
session_start();
}
public function __destruct() {
$session_id = session_id();
if (!empty($session_id)) {
session_write_close();
}
}
}
Voilà c'est tout pour aujourd'hui, la prochaine fois, on parlera de l'utilisation des Views, et nottament, comment éviter un appel rébarbatif à Zend::registry() dans chaque controlleur.
Comments
Moi ça m'intéresse de savoir pourquoi tu as décidé d'utiliser le ZendFramework. Il n'est pas stable encore ! Par exemple je m'entraine à m'en servir grâce à des tutos et il sont déjà presque obsolète (bon ok ce mot n'est pas approprié du tout, trop fort) car Zend_InputFilter est devenu Zend_Filter_Input. Ce que je veux dire c'est que lorsque tu voudras mettre à jour le framework Zend dans ton projet il risque d'y avoir pas mal de chose à retoucher ;)
Je reviens !
Dans la partie 2 du tutoriel d'IBM (que j'ai survolé TRES vite fait) : http://www-128.ibm.com/developerwor... ils utilisent les sessions (mais j'ai regardé vraiment vite fait). Tu 'las déjà lu ? (PS : il faut être enregistré pour avoi accès autéléchargement du tuto).
Une question ! Je vois ce genre de trucs : $DB = Zend_Db::factory('pdoMysql', $params);
Mais c'est jamais le même 1er argument utilisé, je suppose qu'avec la dernière version (0.1.5) c'est Pdo_Mysql non ? :)
Je n'ai pas lu le tuto d'ibm non, mais je vais m'y atteler dès ce soir ;)
pour Zend_DB, c'est bien PDO_MYSQL qu'il faut utiliser dans la dernière version.
et pour le pourquoi de mon choix, j'en ferais une explication détaillés plus tard :p