Ver Mensaje Individual
  #14 (permalink)  
Antiguo 09/05/2012, 03:52
Avatar de oscartt67
oscartt67
 
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años, 7 meses
Puntos: 97
Respuesta: ¿Abuso de POO?

Hola Dani. Pues yo también meto baza..

Cuando pones el ejemplo de articulos con sus propidades y métodos, si das un paso mas, POO cobra aún mas sentido.

Los articulos, familias, almacenes, clientes, pedidos, noticias, ofertas tienen en común:

1. son creados,leidos,modificados y eliminados (CRUD)
2. tienen objetos relacionados: $clsArticulo->clsFamilia->Descripcion
3. tienen un sistema de permisos de acceso
4.......

Fíjate en el código que te dejo a corte de ejemplo. Define una sola clase clsCRUD, que implementa todos los puntos anteriormente dichos (y otras clases). Y si implementas/mejoras un nuevo método en clsCRUD, lo implementas en el resto de objetos.
Con esta simple función, solucionas de un plumazo el mantenimiento de todas las tablas de tu db. Y si alguno és muy especial, extiendes clsCRUD igualmente y sobreescribes sus metodos...

Código PHP:

function NewClassTable($pTable,$pId=''){
    if(!
class_exists($pTable)){
        
$exec="
        class $pTable extends ClsCRUD {
            function __construct(\$cargaId=''){
                \$this->tabla='$pTable';
                \$this->IniVars(\$cargaId);
                }
            }
        "
;
        eval(
$exec);
    }
    
$newclass=new $pTable($pId);
    return 
$newclass;

Y otra cosa es la accesibilidad. Sabes lo cómodo que es que el cliente te pida añadir p.ej, el campo 'referencia2' a una seccion y lo único que tengas que hacer es:

1 añadir dicho campo a la db
2 acceder a el con $clsarticulo->clsFamilia->clsSeccion->referencia2

Saludos a todos.