Diseño de clases PHP y MySQL

Iniciado por redee, 24 Febrero 2014, 21:25 PM

0 Miembros y 1 Visitante están viendo este tema.

redee

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

ivancea96

Supongo que será, para acelerar las búsquedas. Si haces una clase, luego todo se hace más sencillo.

1mpuls0

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 (php-brief) [Seleccionar]


function count_users() {
  ....
  return $var;
}

function exists_user($id) {
....
return $boolean;
}

abc

segurolas.es

Una forma sería esta:

Código (php) [Seleccionar]

class Row {

   private $link, $table, $id;

   function __construct(PDO $link, $table, $id) {
       $this->link = $link;
       $this->table = $table;
       $this->id = $id;
   }

   function __get($name) {
       return $this->link->query("SELECT $name FROM $this->table WHERE id = $this->id;")->fetch()[$name];
   }

}

$link = new PDO('mysql:host=localhost;dbname=test', 'root');

$user = new Row($link, 'user', 1);

echo "Hello $user->name $user->surname!";


Se me ocurren más y mejores...

Saludos.

~ Yoya ~

Es una técnica llamada ORM, muy utilizada y muy útil.

Cita de: wikipediaObject-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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.