Foros del Web » Programando para Internet » PHP »

Ejemplo de ORM

Estas en el tema de Ejemplo de ORM en el foro de PHP en Foros del Web. Hola a todos estoy haciendo un ejercicio para la universidad acerca de un ejemplo de ORM que se me pidió desarrollar, y he desarrollado uno ...
  #1 (permalink)  
Antiguo 03/12/2015, 22:05
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 5 años, 9 meses
Puntos: 0
Pregunta Ejemplo de ORM

Hola a todos estoy haciendo un ejercicio para la universidad acerca de un ejemplo de ORM que se me pidió desarrollar, y he desarrollado uno propio pero no se si esta o no bien y si cumple con el estandar, me podrian decir si cumple con el objetivo, este es:

archivo inicial:
Código PHP:
Ver original
  1. <?php
  2.     include 'usuario.php';
  3.     $prueba=new Usuario('[email protected]','pepe','1234');
  4.     $prueba->addUser();
  5.  
  6. ?>

Clase usuario:
Código PHP:
Ver original
  1. <?php
  2. include 'conexion.php';
  3. include 'query.php';
  4.  
  5. class Usuario{
  6.    
  7.     private $table="usuario";
  8.     private $conexion,$conexionPar;
  9.     private $email;
  10.     private $nombre;
  11.     private $password;
  12.  
  13.     function __construct($email,$nombre,$password){
  14.         $this->email=$email;
  15.         $this->nombre=$nombre;
  16.         $this->password=$password;
  17.        
  18.         $this->conexion=new Conexion();
  19.         $this->conexionPar=$this->conexion->conectar();
  20.        
  21.     }
  22.    
  23.     public function getConexion(){
  24.         return $this->conexion;
  25.     }
  26.    
  27.     public function addUser(){
  28.         $query=new Query();
  29.         $query->add($this->table,$this->conexionPar,$this->email,$this->nombre,$this->password);
  30.     }
  31.    
  32. }
  33.  
  34. ?>

clase conexion:
Código PHP:
Ver original
  1. <?php
  2.  
  3.    
  4.     class Conexion{
  5.        
  6.         private $DB='prueba';
  7.         private $host='127.0.0.1';
  8.         private $pass='';
  9.         private $user='root';
  10.         private $conexion;
  11.        
  12.         public function conectar(){
  13.             $this->conexion=new mysqli($this->host,$this->user,$this->pass,$this->DB);
  14.             if($this->conexion->connect_errno){
  15.                 echo "Fallo la conexion";
  16.             }else{
  17.                 return $this->conexion;
  18.             }
  19.            
  20.            
  21.         }
  22.     }
  23. ?>

clase query:
Código PHP:
Ver original
  1. <?php
  2.  
  3.     include_once 'conexion.php';
  4.     class Query{
  5.        
  6.         public function add($table,$conexion,$email,$nombre,$password){
  7.            
  8.             $conexion->query("INSERT into ".$table." values (\n'".$email."\n',\n'".$nombre."\n',\n'".$password."\n');");
  9.            
  10.         }
  11.        
  12.     }
  13.  
  14. ?>

Última edición por shikamarucb; 06/12/2015 a las 00:14
  #2 (permalink)  
Antiguo 06/12/2015, 08:00
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 11 años, 11 meses
Puntos: 32
Respuesta: Ejemplo de ORM

Se supone que el ORM son objetos que hacen referencia a un registro de una tabla. Yo lo hice a mi manera, un estilo como lo has hecho tú y funcionaba muy bien. El problema es que meter conexiones dentro de la propia entidad no es lo más recomandable. Realmente he ido entendiendo ORM desde que descubrí Doctrine. Hay varias formas de hacerlo. Lo mejor es intentar ver varios ejemplos.
  #3 (permalink)  
Antiguo 06/12/2015, 14:41
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 5 años, 9 meses
Puntos: 0
Respuesta: Ejemplo de ORM

Hola que tal!

Queria preguntarte por que no debe o puede haber una conexion dentro de los atributos de una entidad, me podrias explicar?
Cita:
Iniciado por cluster28 Ver Mensaje
Se supone que el ORM son objetos que hacen referencia a un registro de una tabla. Yo lo hice a mi manera, un estilo como lo has hecho tú y funcionaba muy bien. El problema es que meter conexiones dentro de la propia entidad no es lo más recomandable. Realmente he ido entendiendo ORM desde que descubrí Doctrine. Hay varias formas de hacerlo. Lo mejor es intentar ver varios ejemplos.
  #4 (permalink)  
Antiguo 07/12/2015, 01:55
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 11 años, 11 meses
Puntos: 32
Respuesta: Ejemplo de ORM

La idea de Doctrine, es separar lo que es una entidad (el registro de base de datos) y el acceso a base de datos. Por un lado se crean clases de entidad que lo único que tienen es propiedades, getters y setters, que serán los datos de la base de datos (sería tu clase 'usuario'). Y por otro la dato un repositorio que permite usar métodos ya implementados de acceso a base de datos y podrías crear métodos nuevos con consultas particulares por lo que las entidades no tienen acción directa con la base de datos.

A ver, ya te digo que es una forma de trabajar. Si encuentras una forma mejor de hacerlo mejor para tí. Ya te digo que lo hice más o menos como tú. Con muchos métodos de interacción con base de datos dentro de la propia entidad y era realmente sencillo trabajar con esos objetos. Tú sólo tienes addUser, pero imáginate que creas deleteUser, updateUser, disableUser, enableUser. Estando en el propio objeto es muy fácil trabajar con él. Pero imagínate que quieres actualizar mil usuarios. Creas mil objetos usuario, pero cada uno de ellos tendrá cada método implementado en la clase. Qué pasa con esto? Pues que vas a usar mucha memoria para sólo usar el método updateUser. No es mejor hacer las entidades livianas y apoyarte en una sóla clase externa (repositorio)?

Etiquetas: database, ejemplo, orm
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:09.