Home » Programming » PHP » Choosing Zend Framework was a mistake

Choosing Zend Framework was a mistake

About 2,5 years ago at work we were still using PHP for new applications. With PHP being the language of choice I was looking at what MVC frameworks were available. At the time only Zend Framework (which was at version 1.5) seemed to be the only PHP5 framework. Aside from that it was a mature project and being developed by Zend made me decide to use it. I also reviewed the feature set at the time, of course.

Zend Framework has a steep learning curve but in my experience most OOP based MVC frameworks do. If I remember correctly I first used Zend Framework for an admin panel for a website. Aside from the time to learn the framework it sped up development. At the end I had created a nifty little admin panel for managing company profiles. Administrators were able to manage all accounts (information, pictures) and set-up permissions. A company could in turn manage its own details and pictures.

Programming with PHP became a bit more fun again. Zend Framework provided a mostly consistent API and came with pretty good documentation, although some parts lacked and still do at times.

Being convinced by Zend Framework I started working on the rewrite of a big internal application. This application was written in old procedural PHP4 code. That in itself can work, but only if there’s a decent structure. Which is what this application was missing. Basically it was plain old spaghetti code. Views and logic weren’t separated. HTML, styles, Javascript and PHP were tightly intermingled making it a pain to extend and maintain. The database scheme was a nightmare as well, but with it being a rewrite I could nicely convert it to something more sane and get it normalized. I used Perl and DBIx::Class for this by the way. I should have sticked with it…

It took about 4 or 5 months or so to fully rewrite the application. It probably could’ve been done in 3 months but as I said I found the learning curve for Zend Framework steep. I’ve even reported some bugs I found! Anyway, after several meetings with my colleagues we re-factored a lot of the application to get rid of old nasty hacks and incorrect work procedures of the old application. With the application being written in Zend Framework much of this was easy and fast to realize. Now, 2 years later we’ve added a lot more functionality. The application is still easy to maintain and to extend. And more and more plans are in the making for added functionality.

So, why is it that I think choosing Zend Framework was a mistake? Of course, it’s PHP but as I posted in earlier rants is that only recently I got the green light to use Perl instead of PHP. One problem comes from PHP though. With their latest release in the 5.2 series they suddenly announced end-of-life of PHP 5.2. Long before that it was announced that Zend Framework 2.0 would use PHP 5.3 exclusively. I knew that. But with instantly declaring PHP 5.2 dead and deprecated supporting Zend Framework 1.x after releasing 2.0 doesn’t seem to be required anymore… Why? Because after they’ll release Zend Framework 1.11 they stop doing major releases of the 1.x series. Even if I would be able to use PHP 5.3 it would be a lot of work to refactor the code to be compatible with 2.0.

Now this doesn’t directly imply that Zend Framework 1.11 will stop receiving updates in the form of minor releases. But looking at its history I fear the worst. At one point it was said that the current and the last 2 major versions would receive security updates. Out of 2 times this happened once. The second time it was supposed to happen only the current and last version were updated (I believe this was version 1.10 and 1.9. Luckily I already upgraded tot 1.9 when this happened).

Talking about upgrading, moving from Zend Framework 1.5, 1.6, 1.7, 1.8, 1.9 and 1.10 hasn’t always been painless. A couple of times sudden changes to their API have been made. At some times temporary backwards compatibility was provided, but not always. But that I can forgive, that’s why they’re major releases.

So currently I’ll probably be stuck (as in bug fixes and security updates) with Zend Framework 1.11 when it’s out. Zend Framework is a open-source project so I could always fork the project myself and customize it myself for our own purposes. Even so I’m disappointed with the course Zend Framework went (or seems to be going). The biggest problem with Zend Framework I think is that it’s more of a big collection of classes than a solid framework. Don’t mistake me here, most of the components are very solid. But if they would’ve kept the core small (that being the MVC part and related components) and had moved most classes to the ZendX namespace, such as the webservice classes, they could’ve kept the major releases to a minimum.

Posted in PHP, Programming and tagged as ,
  • Pingback: Htbaa blogs? – Choosing Zend Framework was a mistake | Programming Blog Imagik.org()

  • Chris

    You may be wrong about “it would be a lot of work to refactor the code to be compatible with 2.0.”

    Take a look at their roadmap… It didn’t look to me like the ZF 2.0 MVC would be too radically different:
    http://framework.zend.com/wiki/display/ZFDEV2/Zend+Framework+2.0+Roadmap

    Since you have already refactored the spaghetti code into the MVC pattern for ZF 1.x, porting it over to ZF 2.0 “should” be relatively easy. Definitely not 4 or 5 months like your original effort. Probably a bit of search/replace work, but I doubt any major architectural changes…at least in my projects.

    I am very curious about level of effort it will be to port an app over to 2.0. But I don’t think I am as pessimistic as you. I guess we just get to wait and see when 2.0 is finished and released.

    Personally I am very much looking forward to 2.0, mostly the performance improvements and overall code cleanup. I’m glad that Zend is putting in the effort now cleaning up the 1.x smell than continuing on with it.

    When you base your application on any framework or 3rd party api you run the risk of having to change your code when the interface changes. Personally, I’d rather focus on application features and deal with potential interface changes than coding and supporting a framework myself, but that might just be me.

  • Hi Chris. Thanks for your comment. A good one I might add.

    I guess I might’ve been misinformed about changes in the MVC related classes. But I remember Zend announcing they were planning to completely redo the MVC-part (mainly the C-part) and with it being a major release (from 1.x to 2.x) it wouldn’t be backwards compatible. At least not in a way that controllers could be quickly modified to made compatible. But again, I might’ve been misinformed.

    About the spaghetti project I was referring to, I haven’t reused a single line of code from it. It was *that* bad. But when and/or if converting it from 1.10 to 2.0 will take a lot of time (obviously not as much as the rewrite) is hard for me to say. True, I haven’t spend much attention to 2.0. The same goes for PHP 5.3, which is because I’m still forced to use 5.2 and I’m in still in that mindset.

    I understand I sound pessimistic, which is mainly because of my general irritation with PHP as a language itself, the sudden end-of-life of PHP 5.2 and the ZF backwards compatibility issues I’ve run into. But also because of my current state of mind which is heavily influenced because of issues with my hands. So I guess I should cut PHP and ZF some slack. But only a little bit :-).

    Of course I know the risks of basing ones application on a 3rd party framework. I just hadn’t anticipated on the fast deprecation of ZF releases. Which wasn’t to be expected since, well, you know… Zend is behind PHP. Then again, hello to end-of-life of PHP 5.2.

    I guess my biggest fear is that ZF 1.11 users will be abandoned and left to die like PHP 5.2 users. As long as ZF 1.11 will receive the necessary bug fixes and security updates for some time I’ll be happy.