2012-06-15 30 views
5

Desde una perspectiva de POO, ¿cuál es la forma correcta de crear un DAO (objeto de acceso a datos) en php?Forma correcta de crear un DAO en PHP

Por ejemplo (con cuenta como un ejemplo básico), mi AccountDAO tendrá algunas de las siguientes funciones:

  • GetAllAccounts
  • GetAccountByID
  • UpdateAccount
  • DeleteAccount
  • InsertAccount

Así que una vez que obtengo todas las cuentas en la base de datos, ¿debo devolverlas a la persona que llama como una matriz de objetos de cuenta? ¿Debería devolver el conjunto de resultados de mysql?

¿Conoces algún buen ejemplo de un DAO?

Respuesta

-1

Para ello se puede hacer una clase que contiene 3 métodos uno que crear una conexión a la base de datos, un segundo es que cerca de la conexión y la tercera que ejecuta la consulta SQL

<?php 
class Database{ 

    public function con_open(){ 
     $con = mysql_connect("domain","username","password"); 
      if (!$con) 
      { 
       die('Could not connect: ' . mysql_error()); 
      } 
     mysql_select_db("db_name", $con); 
    } 

    public function query($sql){ 
     $result = mysql_query($sql); 
      if(!$result){ 

      }else{  
        return $result; 
       } 
    } 

    public function fetch($result){ 
     $row = mysql_fetch_array($result); 
     return $row; 
    } 

    public function con_close(){ 
     mysql_close($con); 
    } 
} 


$db = new Database(); 

?> 

Esperamos que esto útil para usted

+2

No solo no debe usar la extensión 'mysql_ *' pero su ejemplo no permite cambiar los detalles de la conexión sin cambiar explícitamente el código. – cspray

+2

Creo que OP está buscando un DAO (utilizado para acceder a una tabla específica en una base de datos), no una clase de base de datos. – AdmiralAdama

0

Estás en el camino correcto para construir un DAO: los métodos que enlistas deberían ser definitivamente parte de un DAO.

Para responder a su pregunta específica, un DAO no debe filtrar objetos específicos de la base de datos, aunque puede filtrar algunos conceptos de bases de datos, siempre que no sean específicos de un proveedor de base de datos.

Así que no, no debe devolver un conjunto de resultados MySQL. Pero podría crear un conjunto de resultados genérico que envuelva un conjunto de resultados MySQL y que pueda funcionar con conceptos de nivel superior (extraer objetos enteros en lugar de extraer columnas).

Editar: Mi intención no es hacerte construir un contenedor de resultados, también puedes devolver una serie de objetos como sugeriste inicialmente. Esto fue solo un ejemplo.

+0

Muchas gracias, he hecho parte de este tipo de trabajo en el mundo ASP, pero todos mis scripts PHP hasta la fecha han sido scripts de procedimientos básicos. Intento convertir mis aplicaciones de php en aplicaciones de oop php. – carlg

Cuestiones relacionadas