Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: redee en 24 Febrero 2014, 21:25 pm



Título: Diseño de clases PHP y MySQL
Publicado por: redee en 24 Febrero 2014, 21:25 pm
Hola a todos

Desde hace tiempo, vengo viendo en alguna que otra página, que los desarrolladores crean clases en PHP con miembros que están directamente relacionados con la estructura de las tablas que tienen en la base de datos. Después van haciendo consultas de la información que interesa y guardando los datos en objetos de PHP que representan a esas clases.

Por ejemplo, si existe una tabla en MySQL llamada "pedidos" con columnas idpedido, nombre, proveedor..., existirá también una clase PHPllamada pedidos que tendrá de atributos idpedido, nombre, proveedor...

¿Es esto una buena práctica?

Gracias anticipadas


Título: Re: Diseño de clases PHP y MySQL
Publicado por: ivancea96 en 24 Febrero 2014, 22:32 pm
Supongo que será, para acelerar las búsquedas. Si haces una clase, luego todo se hace más sencillo.


Título: Re: Diseño de clases PHP y MySQL
Publicado por: 1mpuls0 en 25 Febrero 2014, 16:46 pm
o.O

Entonces cómo se supone que lo usas?

Eso es lo básico de la programación orientada a objetos, yo además de eso, utilizo funciones para realizar conteos o para saber si algun valor existe dentro de la tabla.

Por ejemplo:
Código
  1.  
  2. function count_users() {
  3.  ....
  4.  return $var;
  5. }
  6.  
  7. function exists_user($id) {
  8. ....
  9. return $boolean;
  10. }
  11.  
  12.  


Título: Re: Diseño de clases PHP y MySQL
Publicado por: segurolas.es en 28 Febrero 2014, 13:31 pm
Una forma sería esta:

Código
  1. class Row {
  2.  
  3.    private $link, $table, $id;
  4.  
  5.    function __construct(PDO $link, $table, $id) {
  6.        $this->link = $link;
  7.        $this->table = $table;
  8.        $this->id = $id;
  9.    }
  10.  
  11.    function __get($name) {
  12.        return $this->link->query("SELECT $name FROM $this->table WHERE id = $this->id;")->fetch()[$name];
  13.    }
  14.  
  15. }
  16.  
  17. $link = new PDO('mysql:host=localhost;dbname=test', 'root');
  18.  
  19. $user = new Row($link, 'user', 1);
  20.  
  21. echo "Hello $user->name $user->surname!";

Se me ocurren más y mejores...

Saludos.


Título: Re: Diseño de clases PHP y MySQL
Publicado por: ~ Yoya ~ en 28 Febrero 2014, 17:27 pm
Es una técnica llamada ORM, muy utilizada y muy útil.

Cita de: wikipedia
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language

El punto es que en vez de trabajar con datos raw, trabajas con objetos.

Y como muchos ORM Framework abstraen el motor de base de datos, tu aplicación sera compatible con los diferentes sistema de gestión de base de datos como MySQL, PostgreSQL , ... Siempre que el ORM Framework que utilizas soporte el sistema de gestión de base de datos.

Saludos.