Ver Mensaje Individual
  #4 (permalink)  
Antiguo 20/10/2012, 12:49
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: PHP - SQL Server

Hacer un motor de SQL transparente a la base de datos es fundamental.
Así, si un día quieres cambiar de base de datos, sólo tendrás que tocar un archivo.

Para ello, se crea una interface (o clase totalmente abstracta) con los métodos generales de gestión de bases de datos (conectarse, desconectarse, hacer una consulta, etc).

Luego, por cada tipo de base de datos que exista, se crea una nueva clase que herede de la interfaz, y se programan sus métodos finales utilizando las funciones que te proporcione tu base de datos (mysql, microsoft sql server, oracle, etc).

Aquí tienes un ejemplo de implementación de bases de datos en MYSQL y MS SQL SERVER:

http://www.shapeshifter.se/2008/08/0...rface-for-php/


En ese enlace no lo pone, pero como toque final, se suele seguir el patrón factoría para crear conexiones.
Sería algo así:


Código PHP:
Ver original
  1. <?php
  2. require_once('db_mysql.inc');
  3. require_once('db_mssql.inc');
  4.  
  5. class Connectors
  6. {
  7.   const MYSQL = 0;
  8.   const MSSQL = 1;
  9.  
  10.   static public function getConnection($type,$host,$username,$password,$db)
  11.   {
  12.       switch($type)
  13.       {
  14.         case self::MYSQL:
  15.           return new MySQLConnector($host, $username, $password, $db);
  16.         case self::MSSQL:
  17.           RETURN new MSSQLConnector($host, $username, $password, $db);
  18.       }
  19.       return null;
  20.   }
  21. }
  22. ?>

Por último, donde necesites una conexión a la base de datos en tu propio PHP, usas:

Código PHP:
Ver original
  1. <?php
  2. require_once('Connectors.php');
  3.  
  4. //CODIGO
  5.  
  6. $conectorBD=Connectors::getConnection(Connectors::MYSQL);
  7.  
  8. //MAS CODIGO
  9. ?>

Y si en el futuro, tienes que cambiar de base de datos, por ejemplo a MS SQL, solo tendrías que cambiar la línea a:

$conectorBD=Connectors::getConnection(Connectors:: MSSQL);


El resto del PHP, funcionaría igual.

Última edición por marlanga; 20/10/2012 a las 13:08