19/08/2011, 07:45
|
| | Fecha de Ingreso: agosto-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses Puntos: 3 | |
Respuesta: Object Oriented en la cruda realidad Ok. Gracias por vuestros comentarios. Deduzco que se hace como cada uno le venga en gana.
Analizando y buscando a fondo, y teniendo como referencia buena este enlace de IBM http://www.ibm.com/developerworks/xml/library/os-php-flexobj/ , creo, deduzco que la programacion OO en estos casos debería ser la opción B:
class Persona {
$id
$nombre
$direccion
$foto
...
}
class Usuario extends Persona {
$nick
$password
...
}
class Cliente extends Persona {
$direccion_entrega
$habitual
...
}
Para la implementación de una BD o similar, creo que debería ser un wrapper a un PDO o AdoDB o cualquier cosa algo como:
class Storage extends PDO {
Insert()
Update()
Delete()
}
de esta forma, puedo utilizar cualquier implementación de BD, o de sockets, o de cualquier modo de guardar información. Supongo en que en fondo sería:
class Persona extends Storage {
Insert() {
...
parent::Insert(...);
...
}
}
Pero me queda la tercera, que aun dudo como hacerlo en el concepto de OO. Si yo quiero listar todos los clientes que tengo puedo hacerlo de la forma A ó B:
a)
class Clientes {
Query(...) { Storage->Query("SELECT * FROM Clientes ..." }
Next() {
...
$Cliente = new Cliente(id)
...
return $Cliente
}
}
b)
class Cliente extends Persona {
$direccion_entrega
$habitual
...
Query() {}
Next() {
$this->id = storage->id;
$this->name = storage->name;
...
}
De la forma a) no me gusta que Clientes acceda a la BD independiente de Cliente
De la forma b) no me gusta aplicar el concepto clientes si la clase es cliente.
Argh! Gracias de nuevo por vuestras aportaciones. |