Bonsoir,
J'ai suivi en grande partie la formation sur la POO faite par Grafikart. En suivant le chapitre interface, on parle de la classe Session et Cookie, nous permettant de mettre en place un système de flash.
Seulement, je n'arrive pas à l'implémenter sur le petit framework qu'on a créé en suivant les TP. Personnellement, après le chapitre MVC, j'ai cette arboresence (seul le dossier Component dans Core est du perso).
Pour afficher un message flash, je le met dans app/Views/templates/default.php (j'ai enlevé toute la partie html, ce n'est pas le plus important) :
<?= $flash->get(); ?>
<?= $content; ?>
La question est où mettre :
<?php
$session = new Core\Component\Session();
$flash = new Core\Component\Flash($session);
Dans core/Controller/Controller.php ? Dans la méthode render() ? Car c'est ce que j'ai fait actuellement :
<?php
public function render($view, $variables = []){
ob_start();
$session = new Session();
$flash = new Flash($session);
extract($variables);
require $this->viewPath . str_replace('.', '/', $view) . '.php';
$content = ob_get_clean();
require $this->viewPath . 'templates/' . $this->template . '.php';
}
Dans le obstart() afin que $session et $flash soient accessibles dans le template. Saut qu'il faudrait qu'ils soient aussi accessible dans les méthodes des autres controller, comme PostsController.php.
Même pour pouvoir utiliser les sessions ou les cookies, quel serait le meilleur endroit ? J'ai encore un peu de mal à bien comprendre comment placer une instanciation pour pouvoir utiliser globalement l'objet (les termes sont bons ?). Merci d'avance.