Closed remib18 closed 2 years ago
N'oubliez pas de modifier la méthode getTypes
des différentes entités de la sorte : (exemple de User
public static function getTypes(): array
{
return [
'userID' => ['type' => DataType::int, 'nullable' => false, 'minLength' => 0],
'username' => ['type' => DataType::string, 'nullable' => false, 'minLength' => 5, 'maxLength' => 30],
'email' => ['type' => DataType::email, 'nullable' => false],
'registeredAt' => ['type' => DataType::date, 'nullable' => false]
];
}
Il pourrait être pertinent de remplacer par la suite ces tableaux par des objets.
@MPXH T'es dipo quand en voc? ca serait bien qu'on regarde ca ensemble samedi ou dimanche.
N'oubliez pas de modifier la méthode
getTypes
des différentes entités de la sorte : (exemple deUser
public static function getTypes(): array { return [ 'userID' => ['type' => DataType::int, 'nullable' => false, 'minLength' => 0], 'username' => ['type' => DataType::string, 'nullable' => false, 'minLength' => 5, 'maxLength' => 30], 'email' => ['type' => DataType::email, 'nullable' => false], 'registeredAt' => ['type' => DataType::date, 'nullable' => false] ]; }
Il pourrait être pertinent de remplacer par la suite ces tableaux par des objets.
Je propose:
enum Regex : string {
case username = '^[a-zA-Z0-9_\-]';
}
class DataField {
public DataType $type;
public bool $nullable;
public int $minLength;
public int $maxLength;
public Regex $pattern;
public function __construct(DataType $type, bool $nullable, int $minLength, int $maxLength, regex $pattern) {
...
}
}
Thoughts @remib18 je pense que preset des regex dans une enum serait propre. On pourrait avoir Regex::username dans le consctructeur, et les changements se rependent.
Je pense aussi que ca aiderait à verif de facon elegante car on a pas tes skills. xD
N'oubliez pas de modifier la méthode
getTypes
des différentes entités de la sorte : (exemple deUser
public static function getTypes(): array { return [ 'userID' => ['type' => DataType::int, 'nullable' => false, 'minLength' => 0], 'username' => ['type' => DataType::string, 'nullable' => false, 'minLength' => 5, 'maxLength' => 30], 'email' => ['type' => DataType::email, 'nullable' => false], 'registeredAt' => ['type' => DataType::date, 'nullable' => false] ]; }
Il pourrait être pertinent de remplacer par la suite ces tableaux par des objets.
Je propose:
enum Regex : string { case username = '^[a-zA-Z0-9_\-]'; } class DataField { public DataType $type; public bool $nullable; public int $minLength; public int $maxLength; public Regex $pattern; public function __construct(DataType $type, bool $nullable, int $minLength, int $maxLength, regex $pattern) { ... } }
Thoughts @remib18
je pense que preset des regex dans une enum serait propre.
On pourrait avoir Regex::username dans le consctructeur, et les changements se rependent.
Je pense aussi que ca aiderait à verif de facon elegante car on a pas tes skills. xD
A part un problème de typage au niveau des min/max (dans le cas d'une date, possibilité d'être non définit), ça me semble correcte.
En revanche, de mémoire les énumérations en php ne permettent pas le comportement que tu souhaites implémenter pour les regex. Essaies toujours car comme je l'ai dit c'est de mémoire. Sinon, utilise une classe avec des variables publiques statiques pour avoir le même comportement au niveau de l'appel.
Cependant, je pense que passer la regex en chaîne de caractères permet d'avoir plus de flexibilité et aussi une implémentation un peu plus simple... Libre à vous de décider comment procéder.
Objectif Créer un système de vérification des données qui doit être modulaire pour s'adapter à chaque entité. S'exécute lors de l'enregistrement ou de la modification d'une donnée dans la BDD (cf.
/src/utils/Database
). En cas d'échec d'un test, renvoie une nouvelle erreurFailDataTestException
sinon renvoietrue
.Appel Uniquement dans
/src/utils/Database
. Il est conseillé de prévoir une méthode dédié à la vérification que l'on pourrait appelerrunTests
par exemple et qui serait appelée dansDatabase::create
etDatabase::edit
.Définition
Classe
/src/utils/DataTesting/DataVerification
:Enum
/src/utils/DataTesting/DataType
: