One of my biggest gripes with CakePHP is that there isn’t a built in way to easily define how models report back their “name” to views. There is a handy variable called $displayField, but currently (1.2 RC3) that only accepts a single field.
There are at least 20 PHP MVC frameworks and trying to break each one down into its component strengths and weaknesses would be foolish. Each one tries, on some level, to outdo the others through the combination of features catering to some niche audience. Having been a consumer of everything from Code Igniter to Zend Framework and beyond I can honestly say that no single PHP framework is the “best” or is even deserving of such a title.
There is an entire sub-culture on the internet devoted to the strict adherence to the almight W3C “standards.” I intentionally put standards in quotes because there isn’t any form of universal adoption of these recommendations by the major browsers just yet. While each iteration of Internet Explorer, Opera, Safari and Mozilla move us closer together the differences are still staggering in some cases.