Je travaille actuellement sur une application OO PHP. J'ai une classe appelée validation que j'aimerais utiliser pour vérifier toutes les données soumises est valide, mais j'ai évidemment besoin d'un endroit pour définir les règles pour que chaque propriété soit vérifiée. Pour le moment, j'utilise des tableaux lors de la construction d'un nouvel objet. par exemple: une matrice pour chaque propriété. p> Je voudrais alors appeler une méthode statique à partir de la classe de validation qui effectuerait diverses vérifications en fonction des valeurs définies dans chaque Array. P> Y a-t-il un moyen plus efficace de le faire?
Tout conseil apprécié.
Merci. P> p>
3 Réponses :
Je sais que la matrice associative est utilisée généralement pour configurer des choses dans PHP (elle s'appelle Conteneur magique A > Motif et est considéré comme une mauvaise pratique, BTW), mais pourquoi ne créez-vous pas de plusieurs classes de validateur à la place, chacune d'elles-mêmes pour gérer une règle? Quelque chose comme ceci: Il présente de multiples avantages par rapport à la mise en œuvre à l'aide de tableaux: p>
('REQIUREUX' => TRUE) CODE>) LI>
Merci, je n'avais pas entendu parler d'interfaces avant. Je vais les vérifier!
Étant donné que vous utilisez OO, il serait plus propre si vous avez utilisé des classes pour valider les propriétés. E.G.
class StringProperty { public $maxLength; public $minlength; public $required; public $value; function __construct($value,$maxLength,$minLength,$required) { $this->value = $value; $this-> maxLength = $maxLength; $this-> minLength = $minLength; $this-> required = $required; } function isValidat() { // Check if it is valid } function getValidationErrorMessage() { } } $this->name = new StringProperty($namefromparameter,10,2,true); if(!$this->name->isValid()) { $validationMessage = $this->name-getValidationErrorMessage(); }
Peut-être d'être inspiré par Zend-Framework Validation .
Définissez donc un maître: p> puis construisez vos validateurs personnalisés: p> Enfin, votre matrice inital pourrait devenir quelque chose comme: p> validation pourrait être fait comme ceci: p>