3.0: a peek into CakePHP's future

by lorenzo
With version 2.2.0 out the team is now focusing on bringing the CakePHP community a major new version with awesome features

Since its creation, more than 7 years ago, CakePHP has grown with a life of its own. Its main goal has always been to empower developers with tools that are both easy to learn and use, leverage great libraries requiring low documentation and low dependencies too. We've had several big releases along these years and an ever growing community. Being one of the most popular frameworks out there and probably the first one (!) we have also gotten a lot of criticism from the developer community in general. We have, though, accepted it and learnt from our mistakes to keep building the best PHP framework there is.

CakePHP is known for having a very slow pace of adopting new stuff and it has served very well to its community. Back when we were doing version 2.0 we decided to hold on version 5.2 of PHP for multiple reasons and despite it didn't let us innovate as much as we wished to, it was an excellent choice given the general environment regarding hosting solutions and general adoption of PHP 5.3. A look back into the past reminded us that we were big innovators in PHP, bringing features to developers that few dreamt possible to do in this language. Now, it's time to look ahead in future and decide on staying in our comfort zone or take back our leading position as innovators.

So it is with great excitement that we announce we are putting our our efforts in bringing you the next major release of CakePHP. Version 3.0 will leverage the new features in PHP 5.4 and will include an important change in our models and database system. CakePHP 3.0 will not be ready less than 6 or 8 months and we reckon that, given the rise of cheap cloud hosting solutions and upcoming release of new operating system versions, there is no better time to jump on the most current stable version of PHP.

As you may already know, PHP 5.4 offers awesome features that would introduce useful new concepts and interesting solutions to old problems. Closure binding, traits, multibyte support are tools we see of great usefulness for properly implemented advanced framework features we've had in mind for a long time. Also new syntax sugar added to the language will make it more pleasant to write both small and complex applications with the framework and a always welcomed free performance increase.

We have a young but already well defined road map for what we want to accomplish in next release and you are invited to contribute and suggest what's next:

  • Drop support for 5.2.x and support 5.4+ only
  • Add proper namespaces for all classes. This will make it easier to reuse classes outside CakePHP and to use external libraries and finally no chances of collisions between your app classes and core ones.
  • Use traits were possible and makes sense
  • Improve bootstrapping process to allow more developer control and better performance
  • Model layer rewrite:
    • Models to return objects from queries
    • Datamapper-like paradigm
    • Richer query API
    • Support for any database type
    • Support for more database drivers both PDO and native
  • Improve Router:
    • Make it faster
    • Remove named parameters
    • Add support for named routes
    • Smarter router prefixes
    • Shorter url syntax

As you may imagine most of the time will be spent or rewriting the model layer, but it will also be one of the most powerful features CakePHP 3.0 will have. It's new architecture based on PHP 5.4 capabilities will offer an easier and more powerful set of tools to build web applications in no time.

If you are already as excited as we are this all this new stuff coming, you definitely should meet us on next CakeFest we'll be talking about the future of CakePHP and hacking our way through to bring you a dev release as soon as possible. Wouldn't it be lovely to attend to awesome talks, workshops and also be part of the group deciding initial architecture for next major version of the framework? Make sure you book your tickets before we run out of them!

We're always looking for different people having a vision on software development, are you interested in helping out? There is no better time to start sending patches and become one of the core team!

Report

More on News

Tags

Advertising

Comments

  • eliasfa posted on 11/01/12 09:09:34 PM
    Hi,

    How can I help to CakePHP take a another level?
  • func0der posted on 08/08/12 03:29:38 PM
    test if this is fixed
  • func0der posted on 07/28/12 04:05:30 PM
    ...doesn't it? ^^

    Since you left out PHP5.3 completly in your equasion i am having a little bit of a problem with the whole Cakephp3.0 thing.
    Just think about it. We had the first stable about 2 years ago. Today there are still servers which in over 50 percent of all case run debian which are not up to date with their php. Debian devs do not care for stable. They want "stable stable stable stable" before putting anything in their repo or better make it available over apt.
    So there will be a whole lot of time when no one can really use your framework for real production usage.
    Please dont understand me wrong: I like to force the new to replace the old and all of your cakephp release were awesome (i'm still having projects on cakephp 1.1, so i know what i am talking about :P). But maybe you put a little seconds thought in that and make it at least WORK on php5.3 since there's a lot of great stuff in there too.

    Another thing I like to add to the new release is a working multilanguage validation. I had a discussion about that in the lighthouseapp and provided some code for the generation of multilanguage forms (sorry no patch or something, cause i still don't know how that github thing works exactly).

    Then i have a quesions: What do you mean by the bullets regarding the router "Remove named parameters" and "add support for named routes".
    What's the point in removing the named parameters and what do you mean by "named routes"?

    :D

    func0der
  • func0der posted on 07/28/12 04:05:01 PM
    ...doesn't it? ^^

    Since you left out PHP5.3 completly in your equasion i am having a little bit of a problem with the whole Cakephp3.0 thing.
    Just think about it. We had the first stable about 2 years ago. Today there are still servers which in over 50 percent of all case run debian which are not up to date with their php. Debian devs do not care for stable. They want "stable stable stable stable" before putting anything in their repo or better make it available over apt.
    So there will be a whole lot of time when no one can really use your framework for real production usage.
    Please dont understand me wrong: I like to force the new to replace the old and all of your cakephp release were awesome (i'm still having projects on cakephp 1.1, so i know what i am talking about :P). But maybe you put a little seconds thought in that and make it at least WORK on php5.3 since there's a lot of great stuff in there too.

    Another thing I like to add to the new release is a working multilanguage validation. I had a discussion about that in the lighthouseapp and provided some code for the generation of multilanguage forms (sorry no patch or something, cause i still don't know how that github thing works exactly).

    Then i have a quesions: What do you mean by the bullets regarding the router "Remove named parameters" and "add support for named routes".
    What's the point in removing the named parameters and what do you mean by "named routes"?

    :D

    func0der
  • func0der posted on 07/28/12 04:04:21 PM
    ...doesn't it? ^^

    Since you left out PHP5.3 completly in your equasion i am having a little bit of a problem with the whole Cakephp3.0 thing.
    Just think about it. We had the first stable about 2 years ago. Today there are still servers which in over 50 percent of all case run debian which are not up to date with their php. Debian devs do not care for stable. They want "stable stable stable stable" before putting anything in their repo or better make it available over apt.
    So there will be a whole lot of time when no one can really use your framework for real production usage.
    Please dont understand me wrong: I like to force the new to replace the old and all of your cakephp release were awesome (i'm still having projects on cakephp 1.1, so i know what i am talking about :P). But maybe you put a little seconds thought in that and make it at least WORK on php5.3 since there's a lot of great stuff in there too.

    Another thing I like to add to the new release is a working multilanguage validation. I had a discussion about that in the lighthouseapp and provided some code for the generation of multilanguage forms (sorry no patch or something, cause i still don't know how that github thing works exactly).

    Then i have a quesions: What do you mean by the bullets regarding the router "Remove named parameters" and "add support for named routes".
    What's the point in removing the named parameters and what do you mean by "named routes"?

    :D

    func0der
  • nickelfault posted on 07/18/12 01:24:19 AM
    Can't wait!
  • driz posted on 07/17/12 11:26:07 PM
    What do you mean by 'removing named parameters' from the router? Does this mean you're dropping `/id:1` from urls in version 3?
  • driz posted on 07/17/12 11:23:44 PM
    What do you mean by removing named parameters from the router? Does this mean urls will no longer have `/id:1` ???
  • soldoncakephp posted on 07/09/12 05:03:56 PM
    I have had performance issues on a Cake site...and run into the following so I have decided to abandon CakePHP:

    1. Difficult to upgrade from one version of Cake to another...constant changes to Cake make a larger app difficult to migrate
    2. Slow slow slow slow. I have upgrading hosting environment multiple times now even with 1.5GB of ram in my cloud environment it is still slow. I am abandoning Cake and writing from scratch in PHP 5.
    3. Successfully was using Sluggable Behavior to create a Shopping Cart platform using multiple tables...then in Cake 2.0 it no longer works, not even part of the framework. Can't find reliable examples of how to port to Cake 2.x.
    4. Documentation improvements: I don't expect you to write my app for me...but it would be nice to have a bit more of an example...what does the development team really suggest as far as a solid example with skinny Controllers, Model examples, etc.?

    I also was curious about the Lithium Framework but last time I checked it looks like it died before 1.0 Stable.
    • shift8 posted on 08/01/12 06:15:04 PM
      I have had performance issues on a Cake site...and run into the following so I have decided to abandon CakePHP:

      I also was curious about the Lithium Framework but last time I checked it looks like it died before 1.0 Stable.

      #1: CakePHP should perform just fine. I've used it in the past for a site with hundreds of millions of monthly visitors. It's a very good, friendly, and organized framework...But if you aren't careful you can have a runaway train like anything else.

      #2: Lithium is most definitely not dead. You should really take another look.

      #3: I've personally moved to Lithium due to me just always wanting to be on the cutting edge...But I hope with the addition of namespaces and such with CakePHP, that there will be plenty of opportunities for collaboration. CakePHP has a great community and it would be really nice if we started to see some 3rd party libraries that we could use for either framework.

      I had to re-write a lot of stuff when I made the change and that's a shame. Whether you're using CakePHP 3.0 or Symfony 2 or Lithium, I think the overall goal would be that we have a choice and we still get the great benefit that PHP have given us for years...Flexibility and collaboration. If you need some code to do a specific thing, it's nice to know you can just find it and not re-invent the wheel. Speeding up development. That's important. So I really look forward to CakePHP 3.0 because use or not...We should all be able to benefit.
  • p.r.deltoid posted on 07/09/12 02:53:26 PM
    Flexible as PHP arrays are, my right pinky is growing tired of doing the data[$this->alias][''][''][''] dance so good to hear there are changes afoot in the model layer : )

    Would you consider/have you considered using Doctrine 2 as an ORM/ODM? Has some very nice features and allows a truer model of your business entities than is currently possible in Cake.
  • p.r.deltoid posted on 07/09/12 02:52:45 PM
    Flexible as PHP arrays are, my right pinky is growing tired of doing the data[$this->alias][''][''][''] dance so good to hear there are changes afoot in the model layer : )

    Would you consider/have you considered using Doctrine 2 as an ORM/ODM? Has some very nice features and allows a truer model of your business entities than is currently possible in Cake.
  • zeroasterisk posted on 07/06/12 09:02:03 PM
    This sounds great.

    I love the push forward, and upgrading to 5.4+ isn't going to be a problem for me.

    I've seen twitter chatter about making a plugin for backwards model compatibly... that likely to be the plan?

    I'm all for moving forward with object data records (like ruby, being able to save back to the object in-process, yeah?) but for those of us with very large applications, the upgrade for ALL model implementations will be a significant undertaking.

    Anyway -- forge ahead and keep bringing cake goodness to us unwashed masses.

    Thanks!
    -alan
  • brunob posted on 07/06/12 12:39:01 PM
    I have just posted a Behavior (Active Record pattern for CakePHP) in the bakery to return objects from queries. Dis you have a look?
  • milosmatic posted on 07/06/12 08:23:24 AM
    Looking forward to "Models to return objects from queries" and "Support for any database type", hope to see MongoDB and CouchDB in it :)
  • magnus posted on 07/06/12 06:43:33 AM
    I, and certainly more many others, especially like:
    * Models to return objects from queries
    * Datamapper-like paradigm
  • milosmatic posted on 07/06/12 06:33:41 AM
    3.0 ... I cannot wait :)
login to post a comment.