Bonjour à tous,
Je me pose la question suivante,
Quelle est la manière la plus logique de procéder concernant l'usage d'une classe dédié à des actions CRUD dans une table.
Les méthodes qui composent cette classe doivent attendre des object complets ou des tableaux ? pour la sélection de donnée doit elle renvoyer en objet créé ou un tableau ?
Pour illuster
OU
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 public function getUtilisateurInfo($idutilisateur){ $query = "SELECT * FROM utilisateur WHERE idutilisateur = :idutilisateur LIMIT 1"; $prep = $this->pdo->prepare($query); $prep->bindParam(':idutilisateur', $idutilisateur, PDO::PARAM_STR); try { $prep->execute(); $data = $prep->fetch(); if ($prep->rowCount() > 0) { $utilisateur = new utilisateur(); $utilisateur->setIdutilisateur($data['idutilisateur']); $utilisateur->setUtilisateurNom($data['utilisateurNom']); $utilisateur->setUtilisateurPrenom($data['utilisateurPrenom']); $utilisateur->setUtilisateurEmail($data['utilisateurEmail']); $utilisateur->setUtilisateurMdp($data['utilisateurMdp']); $utilisateur->setUtilisateurIdentifiant($data['utilisateurIdentifiant']); $utilisateur->setUtilisateurType($data['utilisateurType']); $utilisateur->setUtilisateurCivilite($data['utilisateurCivilite']); $utilisateur->setUtilisateurActif($data['utilisateurActif']); return $utilisateur; } } catch (PDOException $e) { conn::setErreur($e); return false; } } function setUtilisateurInfo(utilisateur $utilisateur){ $retour = FALSE; $query =" UPDATE utilisateur SET utilisateurCivilite = :civilite, utilisateurNom = :nom, utilisateurPrenom = :prenom, utilisateurIdentifiant = :identifiant WHERE idutilisateur = :idutilisateur LIMIT 1"; $prep = $this->pdo->prepare($query); $prep->bindParam(':idutilisateur', $utilisateur->getIdutilisateur(), PDO::PARAM_INT); $prep->bindParam(':civilite', $utilisateur->getUtilisateurCivilite(), PDO::PARAM_STR); $prep->bindParam(':nom', $utilisateur->getUtilisateurNom(), PDO::PARAM_STR); $prep->bindParam(':prenom', $utilisateur->getUtilisateurPrenom(), PDO::PARAM_STR); $prep->bindParam(':identifiant', $utilisateur->getUtilisateurIdentifiant(), PDO::PARAM_STR); try { $prep->execute(); return true; } catch (PDOException $e) { conn::setErreur($e); return false; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 public function getUtilisateurInfo($idutilisateur){ $query = "SELECT * FROM utilisateur WHERE idutilisateur = :idutilisateur LIMIT 1"; $prep = $this->pdo->prepare($query); $prep->bindParam(':idutilisateur', $idutilisateur, PDO::PARAM_STR); try { $prep->execute(); $data = $prep->fetch(); return $data; } catch (PDOException $e) { conn::setErreur($e); return false; } } function setUtilisateurInfo($idutilisateur,$civilite,$nom,$prenom,$identifiant){ $retour = FALSE; $query =" UPDATE utilisateur SET utilisateurCivilite = :civilite, utilisateurNom = :nom, utilisateurPrenom = :prenom, utilisateurIdentifiant = :identifiant WHERE idutilisateur = :idutilisateur LIMIT 1"; $prep = $this->pdo->prepare($query); $prep->bindParam(':idutilisateur', $idutilisateur, PDO::PARAM_INT); $prep->bindParam(':civilite', $civilite, PDO::PARAM_STR); $prep->bindParam(':nom', $nom, PDO::PARAM_STR); $prep->bindParam(':prenom', $prenom, PDO::PARAM_STR); $prep->bindParam(':identifiant', $identifiant, PDO::PARAM_STR); try { $prep->execute(); return true; } catch (PDOException $e) { conn::setErreur($e); return false; } }
Je dois dire que j'ai commencer en envoyer et réceptionnant des objects dans mes classe CRUD, mais je commence à me poser des questions , du coup j'ai fais quelques test avec la seconde méthode et cela fonctionne sans souci. J'aimais bien dans la première l'idée de pouvoir vérifier que c'était le bon type d'objet en entrée, et le faite de pouvoir accéder au getter pour attribuer les bonnes valeurs. Par contre la seconde méthode à l'avantage de plus dissocier la partie métier de la partie BDD
Qu'en pensez vous ?
Merci
Partager