Tema: Data Mapper
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/05/2011, 12:22
Avatar de jerkan
jerkan
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Pregunta Data Mapper

Hola,

estoy intentanto implementar el patrón Data Mapper en mi aplicación y lo he hecho de la siguiente manera. Mi pregunta es si es correcto o no.

Por un lado, tengo una instancia de Zend_Db_Table_Row_Abstract que me sirve como entidad de una fila de la base de datos y dónde puedo añadir métodos propios (aparte de los clásicos setters y getters):
Código PHP:
Ver original
  1. class Application_Model_DbTableRow_Users
  2.     extends Zend_Db_Table_Row_Abstract
  3. {
  4.      public function getFullName() {
  5.           return $this->_name.' '.$this->_surname;
  6.      }
  7. }
Por otro lado, tengo una instancia de Zend_Db_Table_Abstract que me sirve para hacer operaciones globales sobre la tabla en cuestión como, por ejemplo, hacer búsquedas o hacer actualizaciones de varios registros:
Código PHP:
Ver original
  1. class Application_Model_DbTable_Users
  2.     extends Zend_Db_Table_Abstract
  3. {
  4.      protected $_name = 'users';
  5.      protected $_rowClass = 'Application_Model_DbTableRow_Users';
  6.  
  7.      public function existsName($name)
  8.      {
  9.          // ....
  10.      }
  11. }
Entonces, para crear un nuevo registro entiendo que habría que hacer algo así:
Código PHP:
Ver original
  1. // controller - action
  2. $user  = new Application_Model_DbTableRow_Users();
  3. $user->setName($name);
  4. $user->setSurname($name);
  5. $user->insert();
Y, para obtener un user en concreto:
Código PHP:
Ver original
  1. $users = new Application_Model_DbTable_Users();
  2. $user = $users->findLastCreatedUser(); // esto devuelve un Application_Model_DbTableRow_Users
  3. $user->getFullname();
¿Qué les parece? ¿Es correcto? ¿Alguna sugerencia para mejorarlo?

Muchas gracias!