QCodo: Rails for PHP

By Deane Barker on December 8, 2005

Qcodo – PHP Development Framework: I think you’re going to see that phrase a lot in the future: “Rails for [insert language here].” I had heard that Cake was “Rails for PHP,” but after watching some demos, I think the QCodo guys have actually obtained that title.

It is a completely object-oriented framework that takes the best of PHP and provides a truly rapid application development platform. Initial prototypes roll out in minutes instead of hours. Iterations come around in hours instead of days (or even weeks). As projects iterate into more cohesive solutions, the framework allows developers to take prototypes to the next level by providing the capability of bringing the application maturity.

QCodo appears to be very good. It’s for PHP5, and to do object relationships it requires MySQL with InnoDB (they use actual foreign keys rather than field-naming conventions), but don’t let that slow you down.

I watched a 14-minute demo of someone building a small trouble-ticket app. It’s Rails-ish beyond belief — I got the same “Good God, things will never be the same” feeling I got when I learned Rails for the first time. Plus, if you know PHP, then you don’t need to learn a new language.

Like Rails, it does a lot of code-genning to create the scaffolding of your app. However, the code-gen is Web based, which is nice, and the templates are all accessible and written in PHP, so you can dial-in your templates to gen really good stuff if you want. You could probably get to the point where your genned stuff was good enough to release without too many changes.

I think this proves that beyond being good in its own right, Rails is going to have a massive secondary effect: it’s going to raise the bar for everyone else. Expectations have suddenly come up, and platforms are going to scramble to get to the same level.

For PHP, I think QCodo has come extremely close.

What Links Here


  1. You should note that altough CakePHP started as an implementation of Rails concepts in PHP, it is now beeing developed to be an independent framework, and does not strive to be a clone of Rails in PHP. Also, altough Qcodo looks nice, as you write yourself, it is designed only for PHP5 and actualy requires you to use InnoDB which can be a serious drawback.

  2. Actually, Qcodo was developed several years before Rails, et. al. The main effect that Rails had on Qcodo was that it inspired the project to be open sourced rather than be proprietary.

    Also, Qcodo seems to be fundamentally different… they talk about some of the fundamental differences between Qcodo and the other frameworks in their Documentation section, where they address code generation vs. ActiveRecord/Runtime Reflection as seen in Rails, Cake, etc.

    Also, Qcodo does NOT require InnoDB. It is fully supported with MyISAM as well as SQL Server, with developers working on PostgreSQL and Oracle. Check out their website, it talks about it all in more detail.

  3. Let’s see, the source of my review is . . . I watched a video of someone using the framework. Those Ginsu knives look amazing, too.

  4. The main drawback of using Innodb is Mysql memory consumption. When renting a Virtual Server, memory allowances are relatively slim – As an example in my VPS, the difference between running Innodb 116mb memory usage vs 22mb without it. Considering the VPS has 192mb, you can see it’s quite critical. If you have the memory though, definitely Innodb is worthwhile

    That being said – If you have Innodb available to you, it would be advantageous in most cases to stick with it – although myisam can be a bit faster during reads, innodb offers a few other advantages which make it the preferable engine.

    I have to agree about the Qcodo vs Cake debate – Qcodo is much more efficient although I am a little concerned it has stalled at Beta 2 since April. It would also be nice to have Unit testing as part of the framework. Django, a python framework is my choice for now.

  5. Hello… I’d like to clear that Qcodo DOES NOT REQUIRE INNODB, there is a file named database.xml which you touch only at two moments:

    1. When you are using more than 1 database at the same time, and
    2. When you are using non-InnoDB databases.

    In this file you specify how many and which databases you are using, and optionally any relationships between tables (not needed if you define the relationships within the database itself).

    So, let the fact of InnoDB not stop you, you can keep working on with your original MyISAM or anything else databases.

    P.S.: Greatest of all, I started using Rails for development for 2 or 3 small projects to test it out and im not saying which one is better, Im just saying that I am too used to PHP that I was 2 to 3 times faster in PHP/Qcodo than I ever were with Ruby/Rails. Before you crucify me, yes, Im pretty fluid with Ruby, Python and of course PHP (got to say that I love version 5).

    I have a server which I can modify at my will, so I upgraded to PHP5 and modified all of my software, and all of my hosting clients are also web dev clients. So it was really easy for me. I know a lot of you will have to wait till your hoster upgrades to PHP5 and/or there are new PHP5 versions of the source you use. But for me, right now…

    PHP5/MySQL5/Qcodo is webdev heaven

  6. I like qcodo, so much so that I built a free swim log for swimmers with it.

    You can see it here: Swimming Log

    My only gripe is the slow pace at which the framework is evolving.

    It’s strongest point is the data based code generation

Comments are closed. If you have something you really want to say, tweet @gadgetopia.