Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/04/2011, 13:11
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: BBDD POO Config, como implementar?

Buenas preguntas miktrv, pero no hay respuestas simples,

1- Hay varias formas de resolverlo, una seria utilizar DI, esto se comento en tu thread anterior, otra mas simple seria que tuvieras un Registry, que en el guardes la conexión y que tus dao's hicieran un fallback al Registry, algo así:

Código PHP:
Ver original
  1. abstract class Dao implements IDao
  2. {
  3.     protected $_pdo;
  4.    public function __construct(PDO $pdo = null)
  5.    {
  6.        if (null === $pdo) {
  7.             $pdo = $this->_getDefaultConnection();  
  8.        }
  9.         $this->_pdo  = $pdo;
  10.    }  
  11.    
  12.    protected function _getDefaultConnection()
  13.    {
  14.         if(!Registry::has('PDO')) {
  15.             throw new DaoException(/***/);            
  16.         }
  17.         return Registry::get('PDO');
  18.    }
  19. }
  20.  
  21. class OfertaDao extends Dao
  22. {}

esta implementación si bien es mas simple, oculta dependencias, lo ideal seria DI, con respecto a cerrar la conexión, de eso no te tenes que preocupar, lo hace PHP cuando termina la ejecución del script.

2- Quien recive el id es el finder del Dao, osea en tu controller instanciarias el Dao y llamarias al find con el id correspondiente,
Código PHP:
Ver original
  1. interface IDao
  2. {
  3.     public function find($id);
  4.     public function findAll();
  5. }
  6.  
  7. abstract class Dao implements IDao
  8. {}
  9.  
  10. class OfertaDao extends Dao
  11. {}
  12.  
  13. //Controller
  14. $dao    = new OfertaDao();
  15. $oferta = $dao->find($_GET['id']);

3- esta pregunta es por demás compleja, la forma simple es que te traigas todo lo relacionado.

Código PHP:
Ver original
  1. class OfertaDao extends Dao
  2. {
  3.    public function find($id, $loadRelated = false)
  4.    {
  5.        $oferta = parent::find($id);
  6.        if(true === $loadRelated && $oferta instanceof Oferta) {
  7.              $cdao = new CiuidadDao();          
  8.              $oferta->Ciudad = $cdao->find($oferta->cuidad_id);
  9.        }
  10.       return $oferta;
  11.    }
  12. }

esto no es mas que una implementación extremadamente simple, yo realmente te sugiero por el tipo de preguntas que estas haciendo, que utilices una herramienta como Doctrine y si es posible la version 2, el problema es que corre sobre PHP 5.3+.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 13/04/2011 a las 14:16 Razón: typo