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.