[Php-avanzado] Propuesta para tesina

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Dom Mayo 31 00:42:13 ART 2009


Hola Gustavo!

El jue, 28-05-2009 a las 14:07 -0300, LarvaXP escribió:
> Bueno, luego de pasar la mayor parte del día leyendo el email (es
> broma)...

	Es que no son temas cortos...

	Además, hay parte opinable, parte metodológica y parte que permite
hacer trampas por usar un lenguaje híbrido.

	Igual, y como me han escuchado decir muchas veces, "para hacer trampas
hay que conocer las reglas".

> Hablando realmente, creeme leo cuando te digo que a mi tampoco me
> agrada para nada el save(), si fuera por mi, lo haría en Java y con
> Hibernate, pero, dado que esta clase se llama "PHP y MySql" e
> Hibernate nunca dio la cara por este lenguaje, y bueno... el menor de
> los males se podría decir.

	Es cierto.
	Si querés, decime masoquista, pero si vamos a usar save() como método
de la clase, prefiero que esté implementado por composición y no por
herencia, así mi modelo con "cuelga" de una serie de desconocidos.

	No para ahora, pero te paso un tip: se puede usar Hibernate con PHP. No
es lindo, pero se puede. Pasa por usar Quercus, la implementación de PHP
escrita en Java por la gente de Resin.

> Con el tema de las relaciones ya estuve peleando, hay que hacer
> sobrecargas de métodos, y al final, se termina codificando (que
> fiasco, a mi me dijeron es automático :p).

	Y no sabés con lo que te vas a encontrar más adelante cuando quieras
trabajar con composición o agregación... y si te aparece un composite,
te vas a acordar de la madre y de toda la familia del que diseñó Propel.

> ...
> $c = new Cliente();
> $c->setNombre = "Leonardo";
> ...
> $p = new PersistenManager();
> $p->save($c);
> ...
> 
> Concuerdo totalmente en lo que mencionás, siendo P perteneciente a lo
> que podríamos llamar "capa de acceso a datos", no ensucia nuestros
> objetos del modelo de negocios con funciones como save(), update()...

	Sí.
	Tengo acá un prototipo de un ORM no invasivo para PHP. El tema es que
no tenemos recursos para desarrollarlo. Estoy tentando a un par de
alumnos para que lo hagan como tesis de grado de su carrera, pero hasta
ahora no los convencí (cuento esto siempre que puedo por si aparece un
sponsor o mano de obra ;-) es un año de proyecto mínimo).
	Lo más triste de esto es que el tema ORM está totalmente resuelto hace
años, "solo" hay que implementarlo. Lo que no me explico es por qué los
que implementaron los primeros para PHP no usaron la solución conocida,
en vez de inventar estas cosas.

> La otra que se puede hacer, es modificar el autogenerador de Propel,
> para que realice un modelo de este tipo, el único problema en este
> caso, es que para persistir un objeto de esta manera, todos los
> atributos del mismo deberían de ser públicos, o en su defecto, tener
> todos un getter.

	y un setter, porque si no no podrías hidratar al Objeto al volver del
repositorio.
	El prototipo que te cuento usa reflection y se la banca para trabajar
con atributos privados.

> Por ahora solo investigué sobre el ORM, y estoy ahora con la teoría
> sobre Administración y Dirección de Proyecto, en cuanto tenga un
> bosquejo de los requerimientos, te lo envío.

	Estás siguiendo a Brooks? Ojalá que sí. Es muy bueno.
	También vale la pena el proceso del PMI BOK

> Saludos

	=mente!
-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado