[Madrid-pm] SocorrOO!

Bruno brunorc en gmail.com
Jue Mar 22 04:00:21 PDT 2007


Hola todos!

Tengo problema con diseño de mis objetos. Uso Rose::DB::Object - el
ORM más rapido de todos - y he creado mis modules (automaticamente)
con Loader, entonces todo el código de capa de BdD está en modulos de
[namespace] MyApp::DB.

Pues, el resto de código está en [namespace] MyApp e injere [no estoy
seguro de palabra - en Inglés "inherits"] de su parte en MyApp::DB. El
problema es, que cuando yo creo el objeto de tipo MyApp::Cerdo, que
está relacionada con MyApp::Corral, puedo hacerlo:

        $cerdo->corral->nombre;

cuando "nombre" es un campo en tabla "corral", pero no puedo hacerlo:

        $cerdo->corral->demolish('irrevertible');

cuando "demolish" es un metodo añadido de MyApp::Corral, porque el
metodo "corral" del MyApp::Cerdo siempre punta al MyApp::DB::Corral (y
no al MyApp::Corral).

Los soluciones, que veo:
 1) cambiar las referencias en las clases generados automaticamente,
que la solucion es más feo, que el cerdo en corral;
 2) quitar las clases de MyApp y usar solo MyApp::DB con código
añadido - pues, es mejor, pero

me gustaría no tocar las clases de MyApp::DB.

Si quiero comer el pastel y tenerlo - pues, es imposible y tengo que
acceptarlo. Pero si teneis algunas sugerencias, os escucho con
atención.

Y como siempre: OO puede solver muchos problemas... y añadir los nuevos :-)

Saludos y gracias, Bruno


Más información sobre la lista de distribución Madrid-pm