From 945af9fda5146405ab9903d4d268bcb2fe95da25 Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 10 Jan 2023 13:08:54 +0100 Subject: enregistrement section 1 --- src/model/Model.php | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'src/model/Model.php') 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 return($this->table); } - // setters (plusieurs en même temps) - public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur + // setters + public function hydrate(array $data): bool // $data = tableau associatif en entrée: nom_du_champ => valeur { foreach($data as $key => $value) { - // nom d'un setter, forme "setMachin()" - $setterName = 'set' . ucfirst($key); // ucfirst met la première lettre en majuscule - // détection - if(method_exists($this, $setterName) && $value != NULL) // on trouve aussi la méthode is_callable() + // nom du setter + // nom_du_champ devient setNomDuChamp + // on sépare les mots par des espaces, ucwords met la première lettre de chaque mot en majuscule, puis on supprime les espaces + $setter_name = 'set' . str_replace(' ', '', ucwords(str_replace('_', ' ', $key))); // ucwords: première lettre de chaque mot en majuscule + if(method_exists($this, $setter_name)) { - //~ var_dump($value); - // on renseigne les propriétés des l'instance - $this->$setterName($value); // nom d'une méthode dans une variable + $this->$setter_name($value); } + else + { + echo "debug: la méthode $setter_name n'existe pas\n"; + return false; + } } - return($this); + return true; } @@ -47,6 +51,8 @@ class Model extends DB if($attributes !== null) // requête préparée { + var_dump($sql); + var_dump($attributes); $query = $this->db->prepare($sql); $query->execute($attributes); return $query; @@ -66,10 +72,12 @@ class Model extends DB $fields = []; $question_marks = []; // ? $values = []; + //~ var_dump($this); foreach($this as $field => $value) { + var_dump($field); var_dump($value); // champs non renseignées et variables de l'objet qui ne sont pas des champs - // note: avec le !== (au lieu de !=) une valeur 0 passe le filtre + // note: avec le !== (au lieu de !=) une valeur 0 est différente de null if($value !== null && $field != 'db' && $field != 'table') { $fields[] = $field; // push -- cgit v1.2.3