Sto lavorando per salvare lo stato di un oggetto in un database utilizzando il pattern del mapper dei dati, ma sto cercando suggerimenti / indicazioni sulla fase di validazione e generazione dei messaggi di errore (passaggio 4 sotto). Ecco i passaggi generali come li vedo per fare questo:
(1) Il data mapper viene utilizzato per ottenere informazioni correnti (array associato) sull'oggetto
in db:
+=====================================================+
| person_id | name | favorite_color | age |
+=====================================================+
| 1 | Andy | Green | 24 |
+-----------------------------------------------------+
il mapper restituisce un array associativo, ad es. Person_Mapper :: getPersonById ($ id):
$person_row = array(
'person_id' => 1,
'name' => 'Andy',
'favorite_color' => 'Green',
'age' => '24',
);
(2) il costruttore dell'oggetto Person prende questo array come argomento, popolando i suoi campi.
class Person {
protected $person_id;
protected $name;
protected $favorite_color;
protected $age;
function __construct(array $person_row)
{
$this->person_id = $person_row['person_id'];
$this->name = $person_row['name'];
$this->favorite_color = $person_row['favorite_color'];
$this->age = $person_row['age'];
}
// getters and setters...
public function toArray()
{
return array(
'person_id' => $this->person_id,
'name' => $this->name,
'favorite_color' => $this->favorite_color,
'age' => $this->age,
);
}
}
(3a) (Richiesta GET) Gli input di un modulo HTML che viene utilizzato per modificare le informazioni sulla persona vengono popolati usando Person :: getters
<form>
<input type="text" name="name" value="<?=$person->getName()?>" />
<input type="text" name="favorite_color" value="<?=$person->getFavColor()?>" />
<input type="text" name="age" value="<?=$person->getAge()?>" />
</form>
(3b) (richiesta POST) L'oggetto Person è stato alterato con i dati POST usando Person :: setters
$person->setName($_POST['name']);
$person->setFavColor($_POST['favorite_color']);
$person->setAge($_POST['age']);
* (4) Convalida e generazione di messaggi di errore su base per ogni campo
- Questo dovrebbe avvenire nell'oggetto persona o nell'oggetto mappatore persona?
- I dati devono essere convalidati PRIMA di essere inseriti nei campi dell'oggetto della persona?
(5) Il mappatore dei dati salva l'oggetto persona (aggiorna la riga nel database):
$person_mapper->savePerson($person);
// the savePerson method uses $person->toArray()
// to get data in a more digestible format for the
// db gateway used by person_mapper
Qualsiasi suggerimento, suggerimento, critica o denominazione sarebbe molto apprezzato.