annotate includes/class.requete.php @ 53:ec0c926a78a6

Nettoyage de la classe d'accès aux données. Petit re-arrangement: les fonctions permettant de s'assurer que l'on a bien de l'utf-8 passe désormais dans la classe TextUtils. D'autre part, la classe a été notablement modifié: 1) si on souhaite passer un nom de base de données, il faut le faire dans le constructeur (précédement, c'était dans la méthode connect, mais c'était trompeur car le code ne gére absolument pas la connexion à deux bases de données différentes sur le même objet) 2) le code essayait de faire du ref-counting sur le nombre de fois où on avait appellé la fonction de connexion, pour fermer quand on avait atteint le même nombre de déconnexion, mais ne faisait pas ca particulièrement bien 3) il y avait une auto-connexion lors de l'execution des requetes si l'on était pas déja connecté, mais il n'y avait jamais d'auto-deconnexion (le code était buggé) 4) on essayait systématiquement de s'assurer que les enregistrements obtenus depuis la base de données étaient en utf8. A priori, c'est pour des considérations de migrations hérités de Mega-Poudlard, mais je crois que ce n'est pas necessaire pour ce blog, et ca ne l'est certainement pas dans le cas général...
author Franck Deroche <webmaster@defr.org>
date Tue, 29 Jan 2008 11:52:32 +0100
parents 8d209692d734
children
rev   line source
webmaster@0 1 <?php
webmaster@0 2 /*
webmaster@0 3 Cette classe permet de filtrer tout le contenu entrant, et permet de se dispenser de
webmaster@0 4 toutes les super-globales.
webmaster@0 5 Element unique pour l'ensemble de la génération, on y accède via Factory::getRequest()
webmaster@0 6 */
webmaster@0 7 class Requete
webmaster@0 8 {
webmaster@0 9 private $arData;
webmaster@0 10
webmaster@0 11 public function __construct()
webmaster@0 12 {
webmaster@0 13 $this->loadArray($_POST, 'POST');
webmaster@0 14 $this->loadArray($_GET, 'GET');
webmaster@0 15 $this->loadArray($_COOKIE, 'COOKIE');
webmaster@0 16 }
webmaster@0 17
webmaster@0 18 // Chargement d'un tableau donné
webmaster@0 19 private function loadArray($array, $name = null)
webmaster@0 20 {
webmaster@0 21 $magic_quotes = (ini_get('magic_quotes_gpc') == '1');
webmaster@0 22 if(!is_array($array)) return;
webmaster@0 23 if(empty($name)) $name = md5(serialize(microtime()));
webmaster@0 24 foreach($array as $key => $value)
webmaster@0 25 {
webmaster@41 26 if(empty($value)) $value = $key;
webmaster@0 27 $this->arData[$key][$name] = ($magic_quotes) ? $value : addslashes($value);
webmaster@0 28 }
webmaster@0 29 }
webmaster@0 30
webmaster@0 31 // Récuperation d'une des variables
webmaster@0 32 public function get($varName, $orig = null, $default = '')
webmaster@0 33 {
webmaster@0 34 if(!isset($this->arData[$varName])) return $default;
webmaster@0 35 if(!empty($orig) && !isset($this->arData[$varName][$orig])) return $default;
webmaster@0 36 if(!empty($orig)) return $this->arData[$varName][$orig];
webmaster@0 37 return current($this->arData[$varName]);
webmaster@0 38 }
webmaster@0 39
webmaster@0 40 // Récuperation d'un tableau de variables dont le nom correspond à un pattern
webmaster@0 41 public function matchingPattern($preg_pattern, $orig = null)
webmaster@0 42 {
webmaster@0 43 $returnValue = array();
webmaster@0 44 foreach($this->arData as $key => $array)
webmaster@0 45 {
webmaster@0 46 if(!preg_match($preg_pattern, $key)) continue;
webmaster@0 47 $returnValue[$key] = $this->get($key, $orig);
webmaster@0 48 }
webmaster@0 49 return $returnValue;
webmaster@0 50 }
webmaster@0 51
webmaster@0 52 // Equivalent de |isset|
webmaster@0 53 public function varSet($varName, $orig = null)
webmaster@0 54 {
webmaster@0 55 if(!isset($this->arData[$varName])) return false;
webmaster@0 56 if(is_null($orig)) return true;
webmaster@0 57 return (isset($this->arData[$varName][$orig]));
webmaster@0 58 }
webmaster@0 59 }
webmaster@41 60 ?>