Une erreur est survenue, veuilez contacter le webmaster si cette erreur persiste."; /* INITIALISATION DE LA VUE VUE * * @template Nom du modèle de la vue à utiliser * @args Données pour construire la vue à partir du modèle * */ public function __construct($template, $args){ // Si pas parametre manquant, on quitte if( $template == null ){ $this->error = Error::MissingPath; return false; } /* [1] On vérifie que le template existe =========================================================*/ $templatePath = $this->checkPath($template); if( $templatePath === false ) return false; /* [2] On récupère le chemin du template et on l'enregistre =========================================================*/ $this->template = $templatePath; /* [3] On enregistre les paramètres =========================================================*/ $this->args = $args; /* [4] On process la vue =========================================================*/ $this->view = call_user_func( $this->template, $this->args ); } /* AFFICHE LA VUE CALCULEE * */ public function view(){ echo $this->view; } /* RETOURNE LA VUE CALCULEE * */ public function getView(){ return $this->view; } /* VERIFICATION DE L'EXISTENCE D'UN MODELE * * @template Chemin du modèle * * @return status TRUE si le modèle existe, sinon FALSE * */ private function checkPath($template){ /* [1] On vérifie le format =========================================================*/ if( !preg_match('/^([a-z]+)\.([a-z]+)$/i', $template, $match) ){ $this->error = Error::ParamError; return false; } /* [2] On vérifie que le template existe =========================================================*/ $class = '\\viewer\\view\\'.$match[1].'\\'.$match[1].'_'.$match[2]; $method = 'render'; /* (1) On vérifie que la classe existe */ if( !class_exists($class) ){ $this->error = Error::UnknownTemplate; return false; } /* (2) On vérifie que la méthode existe */ if( !method_exists($class, $method) ){ $this->error = Error::UnknownTemplate; return false; } /* [3] Si tout est bon, on renvoie les données =========================================================*/ return [ $class, $method ]; } } // USE case // // $myView = new Viewer('templateParent.templateModel', [ // 'myVar' => 1, // 'helloMsg' => 'Hello', // ]); // // $myView->view(); // ?>