Bonjour,
Je suis en train de me bricoler un système de gestion de formulaires en PHP. L'idée étant d'automatiser le traitement et l'affichage.
J'ai des classes définissant les différents types d'input de mon formulaire. Dans ces classes, je stock une fonction anonyme qui va me permettre de valider les données (retournant true si tout va bien, un code d'erreur dans le cas contraire).
En gros, a fonctionne comme ça :
Ce système fonctionne bien. Mais j'aimerais pouvoir avoir des format de validation que l'utilisateur n'a pas besoin de définir. Et vu que je suis en POO sur ce coup, je me suis dis qu'il serait plus correct de placer ces fonctions dans une classe.Code:
1
2
3
4
5
6
7
8
9 $valid = function($a, $b) { return in_array($a, $b) ? true : 'notinarray'; } // field est un input créé et initialisé au préalable $field->set_validation($valid, array('foo', 'bar')); // La validation sera traitée automatiquement plus tard. // Le tableau sera passé en argument avec l'entrée utilisateur.
Je n'ai pas trop l'habitude de manier des objets statiques, ni des fonctions anonymes. Ce qui suit risque de piquer les yeux.
Avec ça, j'obtiens l'erreur : "Fatal error: Undefined class constant 'in' in /opt/lampp/htdocs/framework/test.php"Code:
1
2
3
4
5
6
7
8
9 class FormValidator { public static function inarray($a, $b) { return in_array($a, $b) ? true : 'notinarray'; } } // puis, dans le code de la page de formulaire, toujours avec le même $field : $field->set_validation(FormValidator::inarray, array('foo', 'bar'));
Est-ce qu'il est possible de faire ce que je tente de faire ?
Auriez-vous une autre méthode à me suggérer pour ça ?
Merci

