AFrame was my first solid attempt at a MVC RAD framework. They say you learn faster from doing things wrong..or to use management speak "fail forward" (uhhhhhhhhg). Anyway I learned a lot from this attempt (grin). One thing I learned was not to try to build a framework AND the application that it will be used for at the same time. Seems simple enough right? Anyway most of the things I don't like reared their heads halfway through development so I didn't have time to fix them. Non the less there are 4 web applications running on it now so it does the job OK. The biggest problem arose from me using objects too much...it's kind of a finny thing to say, and outside of this weird alternate reality called PHP it would be grounds for immediate firing but PHP is a weird language. It turns out object instantiation is pretty costly in PHP4 and 5. This was not really a problem until I started dealing with hundreds of data objects that could contain multiple objects of their own. Small collections (20-40 objects) worked just fine. After that shit went downhill fast. I didn't have a lot of time so I ended up "cheating" and just pulling arrays when I needed large result sets which I hated doing. The solution is to use arrays, automatic get/set, and iterators. With this technique I can have the same object iterate through a result set that is stored in an array but still act like it is a separate object. More to come, I gotta get back to work.
Update: I don't do PHP work anymore. Python is the shit yo.