I just got a hold of the public beta of Expression Engine 2.0. I have been using Expression Engine 1.x for a number of years now, and I’ll admit, I wasn’t the most experienced PHP programmer at the time. It was probably the first large PHP program that I had ever used, and I was a little bit awed at how such a massively big OO program could be written.
Since then, I’ve improved my skills tremendously. I’ve learned about SOLID, and DRY. Dependency Injection and Test driven design. I’ve learned about domain modeling, and proper OO design. The code in EE 1.x is utter crap, of course! Global variables scattered everywhere. Copy & Paste style coding. Non-resuable components. No coherent API to speak of. Purely designed plugin system. Who could blame them, though. The code was written almost 10 years ago, in PHP4–with no intention of dropping PHP4 support.
I think I first heard about EE 2.0 almost two years ago. It was coming out that summer. Ever little bit of news that came out made me a little more gittier. It was going to be built on Code Igniter, an MVC framework. Boy was I suprised.
I don’t have time to review the whole code, but suffice it to say, its basically the old EE code, with a few minor differences. I think the following comment sums up all the problems:
/**
* CodeIgniter Application Controller Class
*
* This class object is the super class the every library in
* CodeIgniter will be assigned to.Of course this is really CodeIgniter’s problem I guess, but it certainly bleeds into EE. This is called a God object, and is one of the oldest anti-patterns in the book. No more global variables they say? Gone is global $TMPL. Long live $this->EE->TMPL! What about dependency injection? We’re almost in 2010 for god sakes. This reminds me of the “let’s get rid of globals but making a bunch of singleton and static classes…now we’re doing OOP, yeah!” argument.
At least the template class can be used, more or less, “outside” of EE templates, but so far that’s the only “api” improvement I could find. They haven’t gotten rid of such garbage such as “action_ids”. The database is still retarded. Not only are they storing settings in the database, they’re now encoding them in base64! Where did that come from?.
Ultimately, I am utterly disappointed, and EE is becoming less and less of a platform to build applications off of.
#1 by m at July 9th, 2010
Do you still feel this way about EE? any new thoughts?
#2 by Avi at July 14th, 2010
Still feel this way. I’ve been disenchanted from EE, and now I work mostly with symfony and wordpress.