Je crois que j'ai retrouvé le problème
la fonction render($view); a ete declare dans le controller parent, et c'est la aussi que la variable $vars a ete aussi declarer. C'est dans la function render() qu'on fait l'inclusion de la vue, donc c'est la il faut extraire nos variables avec extract() avant d'inclure la vue; ET dans les controllers de pages, je n'ai plus qu'a juste initialiser la variable $vars avant l'appel de la function render();
cequi me donnerait un render suivant:
function render($view){
$file = ROOT.DS."views/".$view.DS.$view.".php";
extract($this->vars);
if(file_exists($file)){
ob_start();
require_once $file;
$template_content = ob_get_clean();
require_once ROOT.DS."views".DS."layouts".DS.$this->_layout.".php";
}else{
print "404: la vue n'exist pas";
}
}
Et dans mes controller de page je pourrais appler render de cette maniere :
function __construct(){
parent::__construct();
$this->vars"title"] = "Welcome to my web site";
$this->vars"description"] = "We offer you the best IT tutorials on GraphicArt.fr";
$this->render('index');
}
ET dans mes vues je peux acceder a ces variables comme suit:
<?php print $title; ?>
C'est pour cette simplicite d'utilisation des variables que j'ai fait usage de la fonction extract() voir Function extract()
OU COMME SUIT :
<?php print $this->vars'title']; ?>
En fait si j'ai choisie la methode d'extraction c'est parce que j'avais l'intention d'utiliser le racourci de la function echo() dans mes vues comme suit:
<?= print $title; ?>
La ca m'eviterais d'avoir trop de print() ou echo().
Merci a vous pour votre participation.