. * * @package NanoMvc * @author Nicolas Joseph * @copyright 2008 Nicolas Joseph * @license http://www.opensource.org/licenses/gpl-3.0.html GPL v3 * @filesource */ /** * @TODO Que faire de $_SESSION et $_COOKIE ? */ class Request { /** * @var array */ private $default = array ('page' => 'index', 'action' => 'index'); /** * @var array */ private $vars = array (); /** * @var Request */ private static $instance = null; /** * @var array */ public $post = array (); /** * @var array */ public $get = array (); /** * Interprete l'url demandee pour retrouver la page et l'action. * * L'url est de la forme : * http://host/index.php/// * * Que l'on peux ensuite recuperer via les champs Request::page et * Request::action */ private function parse_route () { preg_match ('#index\.php(/(?P\w+))(/(?P\w+)/?)?#', $_SERVER['REQUEST_URI'], $matches); if (isset ($matches['page'])) { $this->page = $matches['page']; } if (isset ($matches['action'])) { $this->action = $matches['action']; } } private function __set ($key, $value) { $this->vars[$key] = $value; } private function __construct () { @session_start (); $this->vars = array_merge ($this->default); $this->post = $_POST; $this->get = $_GET; } /** * Obtenir l'unique instance de la classe. * * @return Request */ public static function get_instance () { if (is_null (self::$instance)) { self::$instance = new self (); } return self::$instance; } /** * @ignore */ public function __get ($key) { return $this->vars[$key]; } /** * @ignore */ public function __isset ($key) { return isset ($this->vars[$key]); } /** * Analyse la requete de l'utilisateur. */ public function parse () { @session_start (); $this->parse_route (); } /** * Retourne les variables d'environnement (ie: $_POST et $_GET) pour les * inclure dans le template. * * @return array */ public function get_env () { return $this->vars; } }