public function testFilter()
 {
     $this->assertEquals(10, CopixFilter::getInt('10'));
     $this->assertEquals(10, CopixFilter::getInt('10.1'));
     $this->assertEquals(10, CopixFilter::getInt('aaaa10.1'));
     $this->assertEquals(10.0, CopixFilter::getFloat('10.0'));
     $this->assertEquals(10.1, CopixFilter::getFloat('10.1'));
     $this->assertEquals(10.1, CopixFilter::getFloat('a1d0.fg1'));
     $this->assertEquals('Bonjour toi', CopixFilter::getAlpha('B\\""\'o56njour toi'));
     $this->assertEquals('Bonjourtoi', CopixFilter::getAlpha('B\\""\'o56njour t\\oi', false));
     $this->assertEquals('Bonjour 17', CopixFilter::getAlphaNum('B\\""\'o-{}°njour 1__-()@7'));
     $this->assertEquals('Bonjour17', CopixFilter::getAlphaNum('B\\""\'o-{}°njour 1__-()@7', false));
 }
 /**
  * Valide et convertit une valeur selon le type indiqué.
  *
  * Le type peut être le nom d'un type PHP comme ceux retourné par gettype($var).
  *
  * Cela peut aussi être le nom d'une classe, auquel cas on vérifie que la valeur est une instance de
  * la classe indiquée.
  *
  * Dans le cas des entiers, booléens et flottants, une conversion est effectuée avec CopixFilter.
  *
  * @param mixed $pValue Valeur à vérifier
  * @param string $pType Type de la valeur (ou null)
  *   - int, integer, numeric : toujours valide, force une conversion en entier avec {@link CopixFilter::getInt()),
  *   - bool, boolean : toujours valide, force une conversion en booléan avec {@link CopixFilter::getBoolean()},
  *   - float, double, real : toujours valide, force une conversion en réel avec {$link copixFilter::getFloat()},
  *   - string : force une conversion en chaîne de caractère,
  *   - array : vérifie que $pValue est un tableau,
  *   - object : vérifie que $pValue est une instance d'un objet, quelque soit sa classe,
  *   - resource : vérifie que $pValue est une resource PHP,
  *   - callable, callback, user function : vérifie que $pValue peut être utilisé comme callback,
  *   - null, mixed : toujours valide, aucune conversion,
  *   - autre : vérifie que $pValue est une instance de $pType.
  * @return array(isValid,valeur)
  *   - isValid: vrai si la $pValue est valide pour le type indiqué,
  *   - valeur: valeur convertie (quand c'est possible et/ou nécessaire).
  */
 protected function _validateValue($pValue, $pType)
 {
     switch (strtolower($pType)) {
         case 'int':
         case 'integer':
         case 'numeric':
             return array(true, CopixFilter::getInt($pValue));
         case 'bool':
         case 'boolean':
             return array(true, CopixFilter::getBoolean($pValue));
         case 'float':
         case 'double':
         case 'real':
             return array(true, CopixFilter::getFloat($pValue));
         case 'string':
             return array(true, (string) $pValue);
         case 'array':
             return array(is_array($pValue), $pValue);
         case 'object':
             return array(is_object($pValue), $pValue);
         case 'resource':
             return array(is_resource($pValue), $pValue);
         case 'callable':
         case 'callback':
         case 'user function':
             return array(is_callable($pValue), $pValue);
         case null:
         case 'null':
         case 'mixed':
             return array(true, $pValue);
         default:
             return array(is_object($pValue) && $pValue instanceof $pType, $pValue);
     }
 }
 /**
  * Récupération d'un flottant dans l'url
  * @param	string	$pVarName	le nom de la variable que l'on veut récupérer
  * @param 	mixed	$pDefaultValue	la valeur par défaut si rien n'est dans l'url
  * @return float
  */
 public static function getFloat($pVarName, $pDefaultValue = null)
 {
     if (($value = self::get($pVarName, $pDefaultValue)) === $pDefaultValue) {
         //Si valeur par défaut, alors on retourne sans tester
         return $value;
     }
     return CopixFilter::getFloat($value);
 }