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.