diff options
Diffstat (limited to 'src/model/Model.php')
-rw-r--r-- | src/model/Model.php | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/model/Model.php b/src/model/Model.php index 938e3dd..4c1fb4d 100644 --- a/src/model/Model.php +++ b/src/model/Model.php | |||
@@ -19,22 +19,26 @@ class Model extends DB | |||
19 | return($this->table); | 19 | return($this->table); |
20 | } | 20 | } |
21 | 21 | ||
22 | // setters (plusieurs en même temps) | 22 | // setters |
23 | public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur | 23 | public function hydrate(array $data): bool // $data = tableau associatif en entrée: nom_du_champ => valeur |
24 | { | 24 | { |
25 | foreach($data as $key => $value) | 25 | foreach($data as $key => $value) |
26 | { | 26 | { |
27 | // nom d'un setter, forme "setMachin()" | 27 | // nom du setter |
28 | $setterName = 'set' . ucfirst($key); // ucfirst met la première lettre en majuscule | 28 | // nom_du_champ devient setNomDuChamp |
29 | // détection | 29 | // on sépare les mots par des espaces, ucwords met la première lettre de chaque mot en majuscule, puis on supprime les espaces |
30 | if(method_exists($this, $setterName) && $value != NULL) // on trouve aussi la méthode is_callable() | 30 | $setter_name = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); // ucwords: première lettre de chaque mot en majuscule |
31 | if(method_exists($this, $setter_name)) | ||
31 | { | 32 | { |
32 | //~ var_dump($value); | 33 | $this->$setter_name($value); |
33 | // on renseigne les propriétés des l'instance | ||
34 | $this->$setterName($value); // nom d'une méthode dans une variable | ||
35 | } | 34 | } |
35 | else | ||
36 | { | ||
37 | echo "debug: la méthode $setter_name n'existe pas\n"; | ||
38 | return false; | ||
39 | } | ||
36 | } | 40 | } |
37 | return($this); | 41 | return true; |
38 | } | 42 | } |
39 | 43 | ||
40 | 44 | ||
@@ -47,6 +51,8 @@ class Model extends DB | |||
47 | 51 | ||
48 | if($attributes !== null) // requête préparée | 52 | if($attributes !== null) // requête préparée |
49 | { | 53 | { |
54 | var_dump($sql); | ||
55 | var_dump($attributes); | ||
50 | $query = $this->db->prepare($sql); | 56 | $query = $this->db->prepare($sql); |
51 | $query->execute($attributes); | 57 | $query->execute($attributes); |
52 | return $query; | 58 | return $query; |
@@ -66,10 +72,12 @@ class Model extends DB | |||
66 | $fields = []; | 72 | $fields = []; |
67 | $question_marks = []; // ? | 73 | $question_marks = []; // ? |
68 | $values = []; | 74 | $values = []; |
75 | //~ var_dump($this); | ||
69 | foreach($this as $field => $value) | 76 | foreach($this as $field => $value) |
70 | { | 77 | { |
78 | var_dump($field); var_dump($value); | ||
71 | // champs non renseignées et variables de l'objet qui ne sont pas des champs | 79 | // champs non renseignées et variables de l'objet qui ne sont pas des champs |
72 | // note: avec le !== (au lieu de !=) une valeur 0 passe le filtre | 80 | // note: avec le !== (au lieu de !=) une valeur 0 est différente de null |
73 | if($value !== null && $field != 'db' && $field != 'table') | 81 | if($value !== null && $field != 'db' && $field != 'table') |
74 | { | 82 | { |
75 | $fields[] = $field; // push | 83 | $fields[] = $field; // push |