El acceso a datos precisa de un contexto, que depende principalmente del sistema de administración de base de datos.

Para el caso particular de los DaoSql como contexto se necesita:
1) una clase de acceso a la base de datos (Db),
2) la clase de configuración de la entidad (Entity) y
3) un identificador de recurso de acceso a base de datos (resourceId).

La implementación actual de los EntityDaoSql se apoya en el uso de EntitySql, que son utilizados para facilitar la implementación de sentencias sql.


class EntitySql {
  public function __construct(Db $db, Entity $entity){
    $this->db = $db; //Ciertos métodos sql requieren, para su definición, una conexión abierta a la base de datos
    $this->entity = $entity; //Entity posee datos de identificación de la base de datos sql (esquema y tabla)
  }
}

class PersonaSql extends EntitySql { ... } 

class EntityDaoSql extends EntityDao{
  protected $entitySql;

  //contexto
  protected $resourceId;
  protected $entity;
  protected $db;  
}

class PersonaDaoSql extends EntityDaoSql {
  public function __construct(){
    $this->resourceId = "pers" . uniqid();
    $this->db = Db::getInstance($this->getResourceId());
    $this->entity = new PersonaConfig;

    $this->entitySql = new PersonaSql($this->getDb(), $this->getEntity());
  }
}

class PersonaDao extends PersonaDaoSql { ... }