Hola amigos.
Después de analizar un poco el método find(…) de la clase ActiveRecord, me percaté que en este se hacían varias operaciones redundantes e innecesarias, luego de hacer las respectivas correcciones el método se redujo en mas de 30 líneas de código, a la vez que se incrementó la legibilidad del mismo.
Algunos de las operaciones innecesarias que habían eran las sig.:
• $what = get_params(func_get_args());
If(is_array($what)){…}
Siempre se verificaba que la variable $what fuera de tipo array, lo cual es innecesario ya que el método get_params(…) invariablemente retorna un objeto tipo array.
• Habían varias comparaciones innecesarias, como:
if(a == 1){ …}
Y más adelante se hacía
If(a != 1){…}
Lo cual se debería reducir a:
If(a == 1) {…} else {...} // “si no es igual, es diferente!”
• Aún cuando no se especificaban condiciones para la búsqueda, la consulta SQL que se generaba siempre contenía la clausula “WHERE 1=1”, lo cual obviamente si funcionaba porque siempre era verdadero; no obstante este tipo de hacks se deberían evitar en un framework serio como lo es kumbia, y así no empobrecer la calidad del código.
Creo que esas mismas incosistencias la tienen el resto de metodos para hacer select a la bd.
He subido una posible correccion y simplificacion de ese metodo al svn.
Comentarios
Saludos
Hola amigo Andres.
Para demostrar porque sostengo que esa funcion siempre devolverá un objeto tipo array, a continuacion posteo el codigo del metodo tal cual esta en el archivo "libs/kumbia/tags.php":
Como se puede constatar, la variable $data siempre sera un array, una cosa diferente es que tenga un solo elemento o mas, pero por eso no dejará de ser un array.
Ademas, creo que los otros puntos que anoté en el post anterior son importantes, ojalá y se revisaran.
Gracias.[/code]
Saludos
Listo amigo, en eso estoy.