WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
Bonjour à tous,

Dans ce tutoriel je vais vous apprendre à créer votre propre validateur de donnée, de sorte à avoir un code plus propre et plus organisé .
Ce tutoriel a été réalisé sous PHP 7.0.10.​


Qu'est ce qu'un Validateur ?

Un validateur, est une classe possédant plusieurs fonctions qui vérifient la validité d'une chaîne de caractère selon des critères donnés.
Nous allons utiliser la programmation orienté objet .
A la fin de ce tutoriel, vous aurez un code semblable à celui ci-dessous, et vous saurez le modifier afin qu'il fonctionne pour votre projet.​

PHP:
$validateur = $this->validator->check("WhiiTe'")->notEmpty()->alpha()->lengthBetween(2, 25);

Cet exemple est tiré d'une base MVC que je suis entrain de construire, j'y ai implanté un validateur qui fonctionne comme cela, pour le tutoriel, on partira d'un dossier vide .​



Créer le Validateur

Dans un dossier vide, vous allez créer un fichier nommé Validator.php, qui contiendra notre classe, et nos fonctions, puis un fichier index.php.

Premièrement nous allons créer la classe Validator qui n'implémentera et n’étendra rien.​

PHP:
<?php

class Validator {

    private $check;
    private $errors = [];

}

?>

Les deux variables privées nous serviront plus tard, la première nous permettra de garder en mémoire la chaîne de caractère qui est testée, et la seconde contiendra les erreurs , qu'on ajoutera au tableau au fur et à mesure que le script détecte une erreur.

Maintenant, dans le fichier index.php, on va créer une nouvelle instance de notre classe.​

PHP:
<?php

require_once "Validator.php";
$validator = new Validator();

$test = $validator->check("WhiiTe")->notEmpty();

?>

Vous remarquez que j'ai appelé deux fonctions à la suite , c'est la syntaxe que nous allons donner à notre validateur, ce ne sera qu'une simple succession de fonctions qui s'occupent de traiter vos données plus rapidement et sans vous faire répéter votre code.

Premièrement dans le validateur, nous allons créer la fonction check, puis notEmpty pour l'exemple.
La fonction check prendra qu'un paramètre, celui-ci sera stocké tout au long du traitement dans la variable privée errors

PHP:
public function check(String $check): Validator{
    $this->check = $check;
    return $this;
}

public function notEmpty(): Validator{
    if(empty($this->check)){
        $this->errors += ["Field cannot be empty."];
    }

    return $this;
}

Comme vous l'avez remarqué, je retourne toujours $this, de sorte à ce qu'on puisse enchaîner les fonctions les unes après les autres.
L'avantage est qu'une fois que la fonction check a définie la variable privée check, il ne nous sera plus nécessaire de préciser en paramètre des autres fonctions la chaîne de caractère à tester.

A présent dans le fichier index.php, faîtes un var_dump de la variable test.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string 'WhiiTe' (length=6)
  private 'errors' =>
   array (size=0)
     empty

Notre objet Validator contient nos deux variables, et un tableau vide pour les erreurs, normal car nous n'avons pas fait passer de chaîne vide dans la fonction check, si ça avait été le cas, nous aurions une entrée avec le message d'erreur du Validator.

Comme ceci.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string '' (length=0)
  private 'errors' =>
   array (size=1)
     0 => string 'Field cannot be empty.' (length=22)

La validateur est quasiment terminé, nous allons créer deux dernières fonctions, getErrors qui nous renverra le tableau des erreurs, et getResponse, qui nous renverra un boolean selon le tableau des erreurs.​

PHP:
public function getResponse(): bool{
    if(empty($this->errors)){
        return true;
    }

    return false;
}

public function errors(): Array{
    return $this->errors;
}

Si le tableau des erreurs est vide, la fonction getResponse retournera true, on aurait pu se servir de la fonction errors qui retourne directement le tableau des erreurs, mais cela ajouterait du code et des vérifications en plus qui peuvent être évitées justement en faisant deux fonctions distinctes.

Et voilà, votre validateur est terminé, vous pouvez vous en servir, peu importe l'architecture de votre site.

Si vous utilisez un framework, tel que Laravel, ou CakePHP, sachez qu'il y a déjà un système de Validation.​


Quelques fonctions

Comme je suis quelqu'un de généreux , je vous ai fait quelques fonctions qui peuvent être plus ou moins utiles selon votre projet.
Je ne les ai pas décrites, le nom des fonctions parlent d'eux-mêmes, le code est compréhensible même par un débutant, pour les utiliser, vous devrez simplement faire comme la fonction notEmpty dans le fichier index.php, rajouter à la suite les fonctions que vous voulez utiliser.​

PHP:
public function lengthBetween(Int $min, Int $max): Validator{
    if($min > strlen($this->check)){
        $this->errors += ["Field is too short."];
    }

    if($max < strlen($this->check)){
        $this->errors += ["Field is too long."];
    }

    return $this;
}

public function isInt(): Validator{
    if(!is_int($this->check)){
        $this->errors += ["Field is not a valid int."];
    }

    return $this;
}

public function alpha(): Validator{
    if(!ctype_alnum($this->check)){
        $this->errors += ["Field is not an alphanumeric value."];
    }

    return $this;
}

public function isBool(): Validator{
    if(!is_bool($this->check)){
        $this->errors += ["Field is not a boolean value."];
    }

    return $this;
}

public function isEmail(): Validator{
    if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $this->check) && !filter_var($this->check, FILTER_VALIDATE_EMAIL)){
        $this->errors += ["Field is not a valid email."];
    }

    return $this;
}

public function isUrl(): Validator{
    if(!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $this->check)){
        $this->errors += ["Field is not a valid url."];
    }

    return $this;
}

public function isEqual(String $compare): Validator{
    if($this->check !== $compare){
        $this->errors += ["Fields not match."];
    }

    return $this;
}

Vous pouvez à tout moment rajouter des fonctions, tout dépend de ce que vous cherchez à faire.


Fin du tutoriel

Merci d'avoir lu, si vous avez une question , une suggestion ou un problème n'hésitez pas à me solliciter dans les commentaires.

Bon développement,
W.
 
Dernière édition:

Romain'

VIP
Inscription
26 Juillet 2014
Messages
4 443
Réactions
2 031
Points
18 933
RGCoins
0
Bonjour à tous,

Dans ce tutoriel je vais vous apprendre à créer votre propre validateur de donnée, de sorte à avoir un code plus propre et plus organisé .
Ce tutoriel a été réalisé sous PHP 7.0.10.​


Qu'est ce qu'un Validateur ?

Un validateur, est une classe possédant plusieurs fonctions qui vérifient la validité d'une chaîne de caractère selon des critères donnés.
Nous allons utiliser la programmation orienté objet .
A la fin de ce tutoriel, vous aurez un code semblable à celui ci-dessous, et vous saurez le modifier afin qu'il fonctionne pour votre projet.​

PHP:
$validateur = $this->validator->check("WhiiTe'")->notEmpty()->alpha()->lengthBetween(2, 25);

Cet exemple est tiré d'une base MVC que je suis entrain de construire, j'y ai implanté un validateur qui fonctionne comme cela, pour le tutoriel, on partira d'un dossier vide .​



Créer le Validateur

Dans un dossier vide, vous allez créer un fichier nommé Validator.php, qui contiendra notre classe, et nos fonctions, puis un fichier index.php.

Premièrement nous allons créer la classe Validator qui n'implémentera et n’étendra rien.​

PHP:
<?php

class Validator {

    private $check;
    private $errors = [];

}

?>

Les deux variables privées nous serviront plus tard, la première nous permettra de garder en mémoire la chaîne de caractère qui est testée, et la seconde contiendra les erreurs , qu'on ajoutera au tableau au fur et à mesure que le script détecte une erreur.

Maintenant, dans le fichier index.php, on va créer une nouvelle instance de notre classe.​

PHP:
<?php

require_once "Validator.php";
$validator = new Validator();

$test = $validator->check("WhiiTe")->notEmpty();

?>

Vous remarquez que j'ai appelé deux fonctions à la suite , c'est la syntaxe que nous allons donner à notre validateur, ce ne sera qu'une simple succession de fonctions qui s'occupent de traiter vos données plus rapidement et sans vous faire répéter votre code.

Premièrement dans le validateur, nous allons créer la fonction check, puis notEmpty pour l'exemple.
La fonction check prendra qu'un paramètre, celui-ci sera stocké tout au long du traitement dans la variable privée errors

PHP:
public function check(String $check): Validator{
    $this->check = $check;
    return $this;
}

public function notEmpty(): Validator{
    if(empty($this->check)){
        $this->errors += ["Field cannot be empty."];
    }

    return $this;
}

Comme vous l'avez remarqué, je retourne toujours $this, de sorte à ce qu'on puisse enchaîner les fonctions les unes après les autres.
L'avantage est qu'une fois que la fonction check a définie la variable privée check, il ne nous sera plus nécessaire de préciser en paramètre des autres fonctions la chaîne de caractère à tester.

A présent dans le fichier index.php, faîtes un var_dump de la variable test.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string 'WhiiTe' (length=6)
  private 'errors' =>
   array (size=0)
     empty

Notre objet Validator contient nos deux variables, et un tableau vide pour les erreurs, normal car nous n'avons pas fait passer de chaîne vide dans la fonction check, si ça avait été le cas, nous aurions une entrée avec le message d'erreur du Validator.

Comme ceci.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string '' (length=0)
  private 'errors' =>
   array (size=1)
     0 => string 'Field cannot be empty.' (length=22)

La validateur est quasiment terminé, nous allons créer deux dernières fonctions, getErrors qui nous renverra le tableau des erreurs, et getResponse, qui nous renverra un boolean selon le tableau des erreurs.​

PHP:
public function getResponse(): bool{
    if(empty($this->errors)){
        return true;
    }

    return false;
}

public function errors(): Array{
    return $this->errors;
}

Si le tableau des erreurs est vide, la fonction getResponse retournera true, on aurait pu se servir de la fonction errors qui retourne directement le tableau des erreurs, mais cela ajouterait du code et des vérifications en plus qui peuvent être évitées justement en faisant deux fonctions distinctes.

Et voilà, votre validateur est terminé, vous pouvez vous en servir, peu importe l'architecture de votre site.

Si vous utilisez un framework, tel que Laravel, ou CakePHP, sachez qu'il y a déjà un système de Validation.​


Quelques fonctions

Comme je suis quelqu'un de généreux , je vous ai fait quelques fonctions qui peuvent être plus ou moins utiles selon votre projet.
Je ne les ai pas décrites, le nom des fonctions parlent d'eux-mêmes, le code est compréhensible même par un débutant, pour les utiliser, vous devrez simplement faire comme la fonction notEmpty dans le fichier index.php, rajouter à la suite les fonctions que vous voulez utiliser.​

PHP:
public function lengthBetween(Int $min, Int $max): Validator{
    if($min > strlen($this->check)){
        $this->errors += ["Field is too short."];
    }

    if($max < strlen($this->check)){
        $this->errors += ["Field is too long."];
    }

    return $this;
}

public function isInt(): Validator{
    if(!is_int($this->check)){
        $this->errors += ["Field is not a valid int."];
    }

    return $this;
}

public function alpha(): Validator{
    if(!ctype_alnum($this->check)){
        $this->errors += ["Field is not an alphanumeric value."];
    }

    return $this;
}

public function isBool(): Validator{
    if(!is_bool($this->check)){
        $this->errors += ["Field is not a boolean value."];
    }

    return $this;
}

public function isEmail(): Validator{
    if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $this->check) && !filter_var($this->check, FILTER_VALIDATE_EMAIL)){
        $this->errors += ["Field is not a valid email."];
    }

    return $this;
}

public function isUrl(): Validator{
    if(!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $this->check)){
        $this->errors += ["Field is not a valid url."];
    }

    return $this;
}

public function isEqual(String $compare): Validator{
    if($this->check !== $compare){
        $this->errors += ["Fields not match."];
    }

    return $this;
}

Vous pouvez à tout moment rajouter des fonctions, tout dépend de ce que vous cherchez à faire.


Fin du tutoriel

Merci d'avoir lu, si vous avez une question , une suggestion ou un problème n'hésitez pas à me solliciter dans les commentaires.

Bon développement,
W.
Intéressant, est ce qu'il peux valider le fonctionnement d'une CB ? Trier celle qui sont mortes et celle qu'ils fonctionne ? :mmh: ?
Tu as oublier le gras
 

Bwaaa le Ratoon

Premium
Inscription
16 Octobre 2014
Messages
2 348
Réactions
907
Points
15 391
RGCoins
0
Bonjour à tous,

Dans ce tutoriel je vais vous apprendre à créer votre propre validateur de donnée, de sorte à avoir un code plus propre et plus organisé .
Ce tutoriel a été réalisé sous PHP 7.0.10.​


Qu'est ce qu'un Validateur ?

Un validateur, est une classe possédant plusieurs fonctions qui vérifient la validité d'une chaîne de caractère selon des critères donnés.
Nous allons utiliser la programmation orienté objet .
A la fin de ce tutoriel, vous aurez un code semblable à celui ci-dessous, et vous saurez le modifier afin qu'il fonctionne pour votre projet.​

PHP:
$validateur = $this->validator->check("WhiiTe'")->notEmpty()->alpha()->lengthBetween(2, 25);

Cet exemple est tiré d'une base MVC que je suis entrain de construire, j'y ai implanté un validateur qui fonctionne comme cela, pour le tutoriel, on partira d'un dossier vide .​



Créer le Validateur

Dans un dossier vide, vous allez créer un fichier nommé Validator.php, qui contiendra notre classe, et nos fonctions, puis un fichier index.php.

Premièrement nous allons créer la classe Validator qui n'implémentera et n’étendra rien.​

PHP:
<?php

class Validator {

    private $check;
    private $errors = [];

}

?>

Les deux variables privées nous serviront plus tard, la première nous permettra de garder en mémoire la chaîne de caractère qui est testée, et la seconde contiendra les erreurs , qu'on ajoutera au tableau au fur et à mesure que le script détecte une erreur.

Maintenant, dans le fichier index.php, on va créer une nouvelle instance de notre classe.​

PHP:
<?php

require_once "Validator.php";
$validator = new Validator();

$test = $validator->check("WhiiTe")->notEmpty();

?>

Vous remarquez que j'ai appelé deux fonctions à la suite , c'est la syntaxe que nous allons donner à notre validateur, ce ne sera qu'une simple succession de fonctions qui s'occupent de traiter vos données plus rapidement et sans vous faire répéter votre code.

Premièrement dans le validateur, nous allons créer la fonction check, puis notEmpty pour l'exemple.
La fonction check prendra qu'un paramètre, celui-ci sera stocké tout au long du traitement dans la variable privée errors

PHP:
public function check(String $check): Validator{
    $this->check = $check;
    return $this;
}

public function notEmpty(): Validator{
    if(empty($this->check)){
        $this->errors += ["Field cannot be empty."];
    }

    return $this;
}

Comme vous l'avez remarqué, je retourne toujours $this, de sorte à ce qu'on puisse enchaîner les fonctions les unes après les autres.
L'avantage est qu'une fois que la fonction check a définie la variable privée check, il ne nous sera plus nécessaire de préciser en paramètre des autres fonctions la chaîne de caractère à tester.

A présent dans le fichier index.php, faîtes un var_dump de la variable test.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string 'WhiiTe' (length=6)
  private 'errors' =>
   array (size=0)
     empty

Notre objet Validator contient nos deux variables, et un tableau vide pour les erreurs, normal car nous n'avons pas fait passer de chaîne vide dans la fonction check, si ça avait été le cas, nous aurions une entrée avec le message d'erreur du Validator.

Comme ceci.​

Code:
C:\wamp\www\Validator\index.php:8:
object(Validator)[1]
  private 'check' => string '' (length=0)
  private 'errors' =>
   array (size=1)
     0 => string 'Field cannot be empty.' (length=22)

La validateur est quasiment terminé, nous allons créer deux dernières fonctions, getErrors qui nous renverra le tableau des erreurs, et getResponse, qui nous renverra un boolean selon le tableau des erreurs.​

PHP:
public function getResponse(): bool{
    if(empty($this->errors)){
        return true;
    }

    return false;
}

public function errors(): Array{
    return $this->errors;
}

Si le tableau des erreurs est vide, la fonction getResponse retournera true, on aurait pu se servir de la fonction errors qui retourne directement le tableau des erreurs, mais cela ajouterait du code et des vérifications en plus qui peuvent être évitées justement en faisant deux fonctions distinctes.

Et voilà, votre validateur est terminé, vous pouvez vous en servir, peu importe l'architecture de votre site.

Si vous utilisez un framework, tel que Laravel, ou CakePHP, sachez qu'il y a déjà un système de Validation.​


Quelques fonctions

Comme je suis quelqu'un de généreux , je vous ai fait quelques fonctions qui peuvent être plus ou moins utiles selon votre projet.
Je ne les ai pas décrites, le nom des fonctions parlent d'eux-mêmes, le code est compréhensible même par un débutant, pour les utiliser, vous devrez simplement faire comme la fonction notEmpty dans le fichier index.php, rajouter à la suite les fonctions que vous voulez utiliser.​

PHP:
public function lengthBetween(Int $min, Int $max): Validator{
    if($min > strlen($this->check)){
        $this->errors += ["Field is too short."];
    }

    if($max < strlen($this->check)){
        $this->errors += ["Field is too long."];
    }

    return $this;
}

public function isInt(): Validator{
    if(!is_int($this->check)){
        $this->errors += ["Field is not a valid int."];
    }

    return $this;
}

public function alpha(): Validator{
    if(!ctype_alnum($this->check)){
        $this->errors += ["Field is not an alphanumeric value."];
    }

    return $this;
}

public function isBool(): Validator{
    if(!is_bool($this->check)){
        $this->errors += ["Field is not a boolean value."];
    }

    return $this;
}

public function isEmail(): Validator{
    if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $this->check) && !filter_var($this->check, FILTER_VALIDATE_EMAIL)){
        $this->errors += ["Field is not a valid email."];
    }

    return $this;
}

public function isUrl(): Validator{
    if(!preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $this->check)){
        $this->errors += ["Field is not a valid url."];
    }

    return $this;
}

public function isEqual(String $compare): Validator{
    if($this->check !== $compare){
        $this->errors += ["Fields not match."];
    }

    return $this;
}

Vous pouvez à tout moment rajouter des fonctions, tout dépend de ce que vous cherchez à faire.


Fin du tutoriel

Merci d'avoir lu, si vous avez une question , une suggestion ou un problème n'hésitez pas à me solliciter dans les commentaires.

Bon développement,
W.
La réponse 3 au sondage je crois :oui:
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
Intéressant, est ce qu'il peux valider le fonctionnement d'une CB ? Trier celle qui sont mortes et celle qu'ils fonctionne ? :mmh: ?

Tu as oublier le gras

Done.
Pour les cartes de crédit j'en ai aucune idée, il existe peut-être une API pour vérifier la validité d'une carte, mais dans ce cas Amazon l'utiliserait et ne permettrait pas de fausse carte de crédit sur son compte. :)
Tout ce que tu peux faire, c'est vérifier le format de la carte de crédit avec du regex, mais après faudra que tu demandes le type de carte etc...
 

Romain'

VIP
Inscription
26 Juillet 2014
Messages
4 443
Réactions
2 031
Points
18 933
RGCoins
0
Done.
Pour les cartes de crédit j'en ai aucune idée, il existe peut-être une API pour vérifier la validité d'une carte, mais dans ce cas Amazon l'utiliserait et ne permettrait pas de fausse carte de crédit sur son compte. :)
Tout ce que tu peux faire, c'est vérifier le format de la carte de crédit avec du regex, mais après faudra que tu demandes le type de carte etc...
En faites avant j'avais un site mais il est mort, il testait les cartes et triait celle qui fonctionne, celle qui fonctionne pas etc.. et je m'en servais pour avoir un mois gratuit sur Netflix ou Deezer ;)
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
En faites avant j'avais un site mais il est mort, il testait les cartes et triait celle qui fonctionne, celle qui fonctionne pas etc.. et je m'en servais pour avoir un mois gratuit sur Netflix ou Deezer ;)

Hum, je sais pas, il y a peut-être des techniques sur le net :p
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
J'ai fait une petit modification de ta class. J'ai modifier quel que truc. Dis moi ce que tu en pense :
PHP:
private $checks = [];

public function check($check){
    $this->check = $check;
    $this->checks[] = $check;
    return $this;
}

public function getResponse($callable){
    if(empty($this->errors)){
        return call_user_func_array($callable, [$this->checks]);
    }else{
        var_dump($this->errors());
    }
}

    private function errors(){
        return $this->errors;
    }

Du coup dans ta page tu fait ceci :
PHP:
require_once("validator.class.php");
$validator = new validator();
$validator->check("")->notEmpty()->getResponse(function($check){ // $check te permet de récupéré ce que tu a mis dans check()
    // Ton code a faire si il y'a pas d'érreur
});
 
Dernière édition:

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 706
Réactions
898
Points
13 164
RGCoins
181
J'ai fait une petit modification de ta class. J'ai modifier quel que truc. Dis moi ce que tu en pense :
PHP:
private $checks = [];

public function check($check){
    $this->check = $check;
    $this->checks[] = $check;
    return $this;
}

public function getResponse($callable){
    if(empty($this->errors)){
        call_user_func_array($callable, [$this->checks]);
    }else{
        echo var_dump($this->errors());
    }
}

    private function errors(){
        return $this->errors;
    }

Du coup dans ta page tu fait ceci :
PHP:
require_once("validator.class.php");
$validator = new validator();
$validator->check("")->notEmpty()->getResponse(function($check){ // $check te permet de récupéré ce que tu a mis dans check()
    // Ton code a faire si il y'a pas d'érreur
});
"echo var_dump" :suspect:
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
La fatigue xD et sinon t'en pense quoi de la modif a part ma faute xD

J'ai édit mon message :p
Oui déjà pas besoin d'echo un var_dump x)

Et je vois pas trop pourquoi tu veux faire ça comme ça, c'est useless un peu :mmh: Tu veux exécuter un callable si y'a pas d'erreur ?
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
J'ai édit mon message :p
j'avais pas vu sorry xD bah ça évite de faire un if .. Si tu utilise ça pour validé les info d'un formulaire, ta pu qu'a mettre ton insertion dans ta bdd dans le callable
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
j'avais pas vu sorry xD bah ça évite de faire un if .. Si tu utilise ça pour validé les info d'un formulaire, ta pu qu'a mettre ton insertion dans ta bdd dans le callable

Perso je trouve tout aussi propre un truc comme ça :

PHP:
if($validator->check("")->notEmpty()->getResponse() == true)
{
       // ton code d'insertion
}

Que ça :

PHP:
$validator->check("")->notEmpty()->getResponse(function(){
      // ton code d'insertion
});

Si tu veux un truc comme le deuxième code, tu t'es compliqué la vie, je vais tester en local et te dis ça
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
Perso je trouve tout aussi propre un truc comme ça :

PHP:
if($validator->check("")->notEmpty()->getResponse() == true)
{
       // ton code d'insertion
}

Que ça :

PHP:
$validator->check("")->notEmpty()->getResponse(function(){
      // ton code d'insertion
});

Si tu veux un truc comme le deuxième code, tu t'es compliqué la vie, je vais tester en local et te dis ça
Si tu a plusieurs champs a vérifié je trouve que ça fait moins propre après chacun fait comme il veux ^^
EDIT: aussi tu a les erreurs directement
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
Si tu a plusieurs champs a vérifié je trouve que ça fait moins propre après chacun fait comme il veux ^^

Tu t'es compliqué la vie, il fallait juste toucher à la fonction getResponse :p

PHP:
    public function getResponse($callable = false) {
        if($callable == false) return (empty($this->errors)) ? true : false;

        if(empty($this->errors)) {
            call_user_func_array($callable, [$this->check]);
        }
    }

Maintenant tu peux faire ça :

PHP:
$validator->check("WhiiTe")->alpha()->getResponse(function($check){
    echo "{$check} a passé les vérifications du validator.";
});

Ou juste :

PHP:
$validator->check("WhiiTe")->alpha()->getResponse(); // true

C'est ce que tu voulais ? :p
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
Tu t'es compliqué la vie, il fallait juste toucher à la fonction getResponse :p

PHP:
    public function getResponse($callable = false) {
        if($callable == false) return (empty($this->errors)) ? true : false;

        if(empty($this->errors)) {
            call_user_func_array($callable, [$this->check]);
        }
    }

Maintenant tu peux faire ça :

PHP:
$validator->check("WhiiTe")->alpha()->getResponse(function($check){
    echo "{$check} a passé les vérifications du validator.";
});

Ou juste :

PHP:
$validator->check("WhiiTe")->alpha()->getResponse(); // true

C'est ce que tu voulais ? :p

Ouais comme ça tu a les deux méthod après je prefere utilisé un callable donc j'ai preferer faire comme j'ai fait ^^
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 721
Réactions
8 521
Points
32 595
RGCoins
-1 596
Ouais comme ça tu a les deux méthod après je prefere utilisé un callable donc j'ai preferer faire comme j'ai fait ^^

Tu peux faire les deux c'est la même :p Tu as modifié pour rien la fonction check() x)
 
Haut