Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/01/2009, 06:09
paloto
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años
Puntos: 2
ORM casero creado desde cero

Hola.

He estado trabajando en un ORM casero para conectar Php con MySql. Sus funciones son muy básicas (Select, Update, Insert, Delete, transacciones, etc.) pero puede ser interesante para alguien que como yo hasta hace poco, mezclaba código PHP con consultas Sql.

La explicación del ORM se encuentra en el blog de desarrollo del juego de Balonmano Online que estoy construyendo ( http://blog.bmtotal.net ) y la entrada concreta (parte de ella) la transcribo a continuación, por supuesto aquellos que puedan aportar alguna mejora o sugerencia que lo hagan, se lo agradezco, y a los que les parezca interesante pueden utilizar este código libremente.

-----------------------------------------------------------------------------------------

Para la elaboración de este ORM he creado las siguientes clases:
elemento: Clase de la que heredarán todas las que necesiten interactuar con la base de datos
Conexion: Clase encargada de establecer la conexión con Mysql (enviar, consultas, abrir conexion, etc.)
CondicionWhere: Clase que sirve para definir las condiciones de una consulta de selección, edición o borrado, es decir, definir los valores del "WHERE" de mysql.
CampoValor: Clase muy simple con dos propiedades; campo y valor. Sirve para pasar a las consultas de edición e inserción con la asignación de valores por campo.

Vamos a explicar las clases de una en una, para que quede mas claro, con ejemplos de código PHP.

Conexión
Esta clase se encarga de abrir la conexión con la base de datos y de enviar las consultas que le pasemos. La clase abre la conexión en el constructor y lo hace hacia la base de datos por defecto. Si queremos conectarnos con otra base de datos simplemente debemos pasarle los parametros de "servidor", "base_de_datos" y "password". El código php de la clase "Conexion" queda así:

Código php:
Ver original
  1. class Conexion {
  2.  
  3. //++++++++++++++++++
  4. //Funciones de conexion
  5. //++++++++++++++++++
  6.  
  7. function Conexion($servidor , $base_de_datos, $password) {
  8.  
  9. // Comprobamos si se han pasado parámetros, y si no se ha hecho, se definen los predeterminados
  10.  
  11. if ($servidor==null && $base_de_datos==null && $password==null){
  12.     $servidor="Servidor";
  13.     $base_de_datos="Nombre_Base_De_Datos";
  14.     $password="Contraseña";
  15. }
  16.  
  17. // Se intenta conectar a la base de datos, y si no se puede captura la excepcion y muestra el mensaje de error.
  18. try {
  19.     mysql_connect($servidor , $base_de_datos, $password);
  20. }
  21. catch (Exception $er){
  22.     print("ERROR: " + $er);
  23. }
  24. }
  25.  
  26. // La siguiente función es la que envía las consultas a la base de datos. Ocurre lo mismo que en la anterior:
  27. // Si se le pasa la base de datos como parametro lo envia a esa, si no, a la prederminada
  28.  
  29. public function Consulta($sql, $base_de_datos){
  30.  
  31. if ($base_de_datos==null){
  32.     $base_de_datos="Nombre_Base_De_Datos";
  33. }
  34.  
  35. if (! $res=mysql_db_query($base_de_datos, $sql)){
  36.     echo mysql_error();
  37.     exit;
  38. }
  39. return $res;
  40. }
  41.  
  42. //A continuacion se muestran las funciones de transacciones, que lo que hacen es enviar consultas simples para iniciar, terminar e interrumpir transacciones.
  43.  
  44. public function iniciaTransaccion($base_de_datos){
  45.  
  46. if ($base_de_datos==null){
  47.     $base_de_datos="Nombre_Base_De_Datos";
  48. }
  49. mysql_db_query($base_de_datos, "BEGIN;");
  50. }
  51.  
  52. public function finalizaTransaccion($base_de_datos){
  53. if ($base_de_datos==null){
  54.     $base_de_datos="Nombre_Base_De_Datos";
  55. }
  56. mysql_db_query($base_de_datos, "COMMIT;");
  57. }
  58.  
  59. public function interrumpeTransaccion($base_de_datos){
  60. if ($base_de_datos==null){
  61.     $base_de_datos="Nombre_Base_De_Datos";
  62. }
  63. mysql_db_query($base_de_datos, "ROLLBACK;");
  64. }
  65.  
  66. }

Y así queda la clase Conexion.

Última edición por paloto; 02/01/2009 a las 06:18