. # # ***** END LICENSE BLOCK ***** /** * La classe FrontController est le Dispatcher du framework, elle lance l'application * Elle est appelée en général dans le fichier index.php à la racine du serveur */ class Minz_FrontController { protected $dispatcher; protected $router; private $useOb = true; /** * Constructeur * Initialise le router et le dispatcher */ public function __construct () { if (LOG_PATH === false) { $this->killApp ('Path doesn’t exist : LOG_PATH'); } try { Minz_Configuration::init (); Minz_Request::init (); $this->router = new Minz_Router (); $this->router->init (); } catch (Minz_RouteNotFoundException $e) { Minz_Log::record ($e->getMessage (), Minz_Log::ERROR); Minz_Error::error ( 404, array ('error' => array ($e->getMessage ())) ); } catch (Minz_Exception $e) { Minz_Log::record ($e->getMessage (), Minz_Log::ERROR); $this->killApp ($e->getMessage ()); } $this->dispatcher = Minz_Dispatcher::getInstance ($this->router); } /** * Démarre l'application (lance le dispatcher et renvoie la réponse */ public function run () { try { $this->dispatcher->run ($this->useOb); Minz_Response::send (); } catch (Minz_Exception $e) { try { Minz_Log::record ($e->getMessage (), Minz_Log::ERROR); } catch (Minz_PermissionDeniedException $e) { $this->killApp ($e->getMessage ()); } if ($e instanceof Minz_FileNotExistException || $e instanceof Minz_ControllerNotExistException || $e instanceof Minz_ControllerNotActionControllerException || $e instanceof Minz_ActionException) { Minz_Error::error ( 404, array ('error' => array ($e->getMessage ())), true ); } else { $this->killApp (); } } } /** * Permet d'arrêter le programme en urgence */ private function killApp ($txt = '') { if ($txt == '') { $txt = 'See logs files'; } exit ('### Application problem ###
'."\n".$txt); } public function useOb() { return $this->useOb; } /** * Use ob_start('ob_gzhandler') or not. */ public function _useOb($ob) { return $this->useOb = (bool)$ob; } }