setPresta($presta); } } // getters public function getPresta(): Prestation { return $this->presta; } public function getLoyer(): float { return $this->loyer_hebdo; } public function getLoyersPayes(): int { return $this->loyers_payes; } public function getAll(): array { // n'utiliser get_object_vars() qu'avec une entité parce qu'on maîtrise le nombre de propriétés return get_object_vars($this); } public function getAllWithWindowFields(): array { return [ "Désignation:" => $this->designation, "Description du modèle:" => $this->modele_description, "Valeur:" => $this->valeur, "État des lieux de début:" => $this->etat_des_lieux_debut, "État des lieux de fin:" => $this->etat_des_lieux_fin, "Durée de la location:" => $this->duree_location, "Loyer Hebdomadaire:" => $this->loyer_hebdo, "Loyers Payés:" => $this->loyers_payes, "Caution:" => $this->caution]; } // setters public function set(string $entry, string $input) { $input = $this->cleanSpecialChars($input); // possibilité que $input devienne une chaîne vide switch($entry) { case "Désignation:": $this->setDesignation($input); break; case "Description du modèle:": $this->setModeleDescription($input); break; case "Valeur:": $this->setValeur($input); break; case "État des lieux de début:": $this->setEtatDesLieuxDebut($input); break; case "État des lieux de fin:": $this->setEtatDesLieuxFin($input); break; case "Durée de la location:": $this->setDureeLocation($input); break; case "Loyer Hebdomadaire:": $this->setLoyerHebdo($input); break; case "Loyers Payés:": $this->setLoyersPayes($input); break; case "Caution:": $this->setCaution($input); break; } } private function setPresta(Prestation $input) // private? { $this->presta = $input; } public function setDesignation(string $value) { $this->designation = $value; return($this); } public function setModeleDescription(string $value) { $this->modele_description = $value; return($this); } public function setValeur($value) { $value = str_replace(',', '.', $value); $this->valeur = (float) $value; return($this); } public function setEtatDesLieuxDebut(string $value) { $this->etat_des_lieux_debut = $value; return($this); } public function setEtatDesLieuxFin(string $value) { $this->etat_des_lieux_fin = $value; return($this); } public function setDureeLocation(string $value) { $this->duree_location = $value; return($this); } public function setLoyerMensuel($value) { $value = str_replace(',', '.', $value); $this->loyer_mensuel = (float) $value; return($this); } public function setLoyersPayes($value) { $value = str_replace(',', '.', $value); $this->loyers_payes = (float) $value; return($this); } public function setCaution($value) { $value = str_replace(',', '.', $value); $this->caution = (float) $value; return($this); } private function setAll(array $input) // private? { $this->designation = $input[0]; $this->modele_description = $input[1]; $this->valeur = (float)$input[2]; $this->etat_des_lieux_debut = $input[3]; $this->etat_des_lieux_fin = ''; // sécurité $this->duree_location = $input[4]; $this->loyer_hebdo = (float)$input[5]; $this->loyers_payes = (int)$input[6]; $this->caution = (int)$input[7]; } // à mettre plus tard dans une classe mère protected function cleanSpecialChars(string $data): string { $search = ['"']; return str_replace($search, '', $data); } // à mettre plus tard dans une classe mère public function hydrate(string $answers) { $answers = $this->cleanSpecialChars($answers); // possibilité que $answers devienne une chaine vide if($answers == '') { echo "erreur de Location::hydrate(), la chaine \$answers est vide.\n"; return false; } $data_array = explode('|', $answers); // array $check = false; if(count($data_array) === 8) { $this->getPresta()->setModePaiement(''); // sécurité, doctrine plante si "null" $this->setAll($data_array); } else { echo "erreur de Location::hydrate(), le tableau \$data_array n'a pas la taille attendue.\n"; return false; } //self::$entityManager->persist('Prestation'); self::$entityManager->persist($this); // $Presta avec en cascade! self::$entityManager->flush(); } }