3.0: a peek into CakePHP's future
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!

How can I help to CakePHP take a another level?
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
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
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
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.
#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.
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.
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.
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
* Models to return objects from queries
* Datamapper-like paradigm