Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/12/2007, 14:54
Avatar de pragone
pragone
 
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Podrían darme comentarios sobre esta librería

Jajaja... es increíble el parecido... en mi librería la configuración de una tabla es (cuando la haces por XML):
<table name="main">
<field type="integer" isPK="true" includeInInsert="false">id</field>
<field type="text">name</field>
</table>
en la de ellos:
<table name="book">
<column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
<column name="title" type="varchar" size="255" required="true" />
</table>

En la mía crear un registro es:
Código PHP:
$usuario = new Usuario();
$usuario->name 'Paolo'// seters al estilo Java también se soportan
$usuario->create(); 
y en Propel es:
Código PHP:
$author = new Author();
$author->setFirstName("Jack");
$author->setLastName("London");
$author->save(); 
Los métodos para modificar, eliminar y cargar de BD por clave primaria son "IDENTICOS", así como los métodos para obtener objetos relacionados por claves foráneas y setear claves foráneas con objetos.

Lo único que no me gusta de Propel (y donde veo una diferencia interesante) es:
1) Mi librería no requiere la fase de creación de los objetos. Los objetos pueden ser creados en forma dinámica en tiempo de ejecución, es luego de que se ha estabilizado la estructura de la BD que por razones de rendimiento podrás compilarla (como dije antes... aunque esa funcionalidad todavía está en desarrollo).
2) Soy un fanático de la optimización (y debo serlo, me encargo de un sitio con aprox. 110MM de páginas vistas al mes) por lo que no me gusta tener que incluir paquetes como el Criteria que a mi forma de ver ponen bonito el código, pero no te ayudan para nada... ayudan a que la librería pueda ser más sencilla por dentro... pero si tengo que escribir 15 líneas de código para hacer un WHERE complicado, prefiero simplemente escribir el WHERE yo mismo. Además, mi librería tiene hasta el momento casi la misma funcionalidad que Propel (aunque le falta bastante en término de manejo de errores) y es un solo archivo con unas 500 lineas de código.
3) Tiene la misma gran limitación que mi librería: no puedes manejar atributos en las tablas intermedias que usas para relaciones N:N (estoy trabajando en algo para eso)
4) No tiene un soporte adicional para Caching. Aunque todavía no he hecho un buen sistema de cache, ya tengo una interfaz que permite extender la funcionalidad integrando dicho sistema. La interfaz la he modelado basándome en Memcached de la gente de Danga (esta gente es Genial!)

Ahora bien, tiene algunas cosas que me parecen bien, puedes definir las acciones a tomar en caso de un delete, es decir puedes decir si una clave foránea debe hacer eliminación en cascada y eso puede ser útil (sobre todo con algunas DB como MySQL con MyISAM).

En fin... creo que estudiaré con un poco más de profundidad a Propel, pero excepto que vea algo más que sea realmente interesante, seguiré con el desarrollo de mi librería, orientándola a usuarios que busquen algo más "light" con las mismas prestaciones.

De nuevo, gracias GatorV por el enlace, el proyecto está muy interesante.

Si alguien tiene algún otro comentario o enlace es altamente bienvenido.