The Cake is a Lie!

Fair warning – minor ranting may be found in this post…

At this point it would be fair to say I really really do not like CakePHP. In fact, I hate it.  Almost two weeks of trying to learn this framework has made me loath coming to work.  It isn't coding, it's figuring out how to do the most convoluted configurations to instruct cake how to write the app for you.  The "code" you have to write for all this configuration is bloated, ugly, and makes no sense.

The only thing I hate more is their ORM which is completely asinine.  Let's take a simple, easy to use query object and convert it into some sort of crazy ass multi-dimensional array.  Really?  Why? Why? Why?  Even they recognize the ridiculousness of this concept as, according to their docs, they are dropping that whole bit in Cake v3.  Reading about Cake 3 it actually sounds like a significant improvement in a lot of ways, including dumping some of the "magic" wand crap.  Problem is, v3 is coming out who knows when.

Which is another issue…we're struggling to learn Cake 2…when 3 is COMPLETELY different (something repeatedly emphasized in the v3 docs), which means we're learning it just to have to relearn again if/when v3 comes out? Or stay in v2 hell?

So we may be dropping it…I'm more than ready to look at something else.  Thus far though all of the PHP frameworks seem to be very similar, bloated, excessively complicated, and designed to do almost everything for you.  I don't want to "build" an app by just running a bunch of generate commands, throwing in some layout, and then just hope it all runs.


Of the frameworks that seemed to consistently be coming out as the most heavily used (i.e. that jobs/developers criteria), here is what I found:

Currently on v2, v3 in development and will be massively different; no release date on v3

This framework is all done by a single man so if he gets bored or hit by that proverbial beer truck that is gunning for all developers, there goes that; yes it has some decent sized sponsors sort of behind it and it has its own conference, but really, if he's done it's done.   It's also fairly new, yet in 3 years has already done 4 major releases – seems like a bit much for something like a framework

Current owning company does not want to do it anymore because it makes them no money (certainly a fair reason); they posted about looking for a new owner last year and no one has taken them up on it so pretty much in the same state as Mach-II

After acting looking at code from each one, this one seemed more like what we'd like in terms of how it works, other than it being a C-based module (which would mean having to debug C if something really deep broke.  Still I was actually getting a little excited, but before I could share with my partner I saw the fun bit: they are working on a v2 that is *gasp* a complete redo!  Instead of it's current uniqueness of being a C module, they are moving to their own freaking language, Zephir. When done it is, at least, supposed to be totally backwards compatible with apps built in their current version.  I've also seen a lot of complaints about a lack of good docs, though my initial glances seemed to show they had decent ones.

A fork of the dead/dying CodeIgniter, at least initially. But then they completely rewrote it, killing that appeal. The documentation though is hideous, whole areas that are just blank pages. Not even a taunting "coming soon" message. Oh, and it was also abandoned two years ago by its creator, and while one guy apparently kept going on it to do a final release, it is officially dead.

Currently on v1.1.14 and…yep, a v2 is in beta. And, yet again, v2 is a complete rewrite and switching from one to the other is, in their words, "will not be trivial" though they do say the learning curve itself should be smaller as long as you are already familiar with one or the other. This one takes hand holding to a whole new level though – web-based model creation. Just fill in the form and poof…No.

Zend Framework 2
Huge, complicated as all get out, and repeatedly noted to be very hard to learn and slow performing due to its heavy load. Looking at the docs, I'd have to agree on the learning curve, they are so bad.

Company supported, like Zend, but like Zend it is also larger, far more complicated, higher learning curve, and often referred to as "bloated" in discussions on frameworks. That said, of the two it did generally have more positive remarks in terms of flexibility and being more modular. From the docs, it seems like you can turn off the stuff you don't need – like that damn ORM crap!

Did you notice how many are in the middle of a major redo?  WTF? Did we just happen to come over to the "dark side" at just the right/wrong time or something?  Another thing that seems common with the PHP frameworks is being heavily connected to all aspects of the apps.  With most ColdFusion frameworks you could relatively easily "lift" off the framework and replace it with something else.  Yeah, you'd have to rewrite views a bit, but if properly done, your framework mostly interacted with service layers, so the "real" app was framework independent. 

Not so with any of these PHP ones, they all have to put their hands heavily into everything – the models, the controllers, the views, etc.  Replacing one with another requires significantly more code rewriting.  And the need to replace seems to be pretty high as most of these frameworks are seeming to have very short life spans, 2-3 years, before being abandoned as they are mostly personal/small group projects.  The few that are older/more established, like Cake and the like, are either in the midst of mass transition or have become too big/bloated for their own good.

I've also looked at some of the "micro" frameworks like Flight and Slim, but they mostly had poor documentation and didn't seem to offer any real benefit over just coding stuff ourself following a normal MVC model.  And maybe that will be the direction we go – just straight PHP and figure out our own way to do the models and what not in a way that makes sense for us.

Waits for the inevitable defense of one or all of the aforementioned frameworks to begin…popcorn?