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); }