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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
class Application_Model_ServiceMapper
{
protected $_dbTable;
//settor
public function setDbTable($dbTable)
{
if (is_string($dbTable)) {
$dbTable = new $dbTable();
}
if (!$dbTable instanceof Zend_Db_Table_Abstract) {
throw new Exception('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
}
//guettor
public function getDbTable()
{
if (null === $this->_dbTable) {
$this->setDbTable('Application_Model_DbTable_Service');
}
return $this->_dbTable;
}
public function save(Application_Model_Service $service)
{
//récupération dans un tableau des données de l'objet $service
//les noms des clés du tableau correspondent aux noms des champs de la table
$data = array(
'name' => $service->getName(),
'link_description' => $service->getLink_description(),
'enable' => $service->getEnable(),
);
//on vérifie si un l'objet $service contient un id
//si ce n'est pas le cas, il s'agit d'un nouvel enregistrement
//sinon, c'est une mise à jour d'une entrée à effectuer
if(null === ($idservice = $service->getIdservice()))
{
unset($data['id']);
$this->getDbTable()->insert($data);
}
else
{
$this->getDbTable()->update($data, array('id = ?' => $idservice));
}
}
//récupére une entrée dans la table
public function find($idservice, Application_Model_Service $service)
{
$result = $this->getDbTable()->find($idservice);
if (0 == count($result)) {
return;
}
//initialisation de la variable $row avec l'entrée récupérée
$row = $result->current();
//setting des valeurs dans notre objet $service passé en argument
$service->setIdservice($row->id);
$service->setName($row->name);
$service->setLink_description($row->link_description);
$service->setEnable($row->enable);
}
//récupére toutes les entrées de la table
public function fetchAll()
{
//récupération dans la variable $resultSet de toutes les entrées de notre table
$resultSet = $this->getDbTable()->fetchAll();
//chaque entrée est représentée par un objet Application_Model_Service
//qui est ajouté dans un tableau
$entries = array();
foreach($resultSet as $row)
{
$entry = new Application_Model_Service();
$entry->setIdservice($row->id);
$entry->setName($row->name);
$entry->setLink_description($row->link_description);
$entry->setEnable($row->enable);
$entries[] = $entry;
}
return $entries;
}
//permet de supprimer un utilisateur,
//reçoit la condition de suppression (le plus souvent basé sur l'id)
public function delete($idservice)
{
$result = $this->getDbTable()->delete($idservice);
}
} |