A while back, I posted a review of some existing Active Record implementations. One of those happened to be the Zend frameworks DB portion. I believe that was about the time of version 0.7, and I recently looked on their website and discovered 1.0 had been released.
I initially had low expectations, expecting 1.0 to just clean up 0.7 code, with minimal feature additions. After I downloaded it, I found out how wrong I was. The 1.0 release fixed every negative comment I had about 0.7. Although it’s not perfect, it’s a lot better than it used to be.
The Good..
Variables for defining which row and rowset classes to use in Zend_Db_Table. This enables custom row and rowset classes which I believe is a must-have.
Support for compound primary keys
Ability to cache the table meta data and prevent unnecessary database access
The Bad…
Application level support for foreign keys, namely cascading deletes. This feature is awesome since a lot of the tables I work with are myisam and don’t support cascading deletes. Too bad it doesn’t truly cascade. If you delete a single record, it will cascade that delete to all related tables, but no cascading after that. Basically, a worthless feature that causes more confusion than it helps. Just use MySQL’s Innodb storage engine and clean up the code
Complexity. Lots of classes and lots going on.