Love Fuel?    Donate

Thoughts, ideas, random notes, ramblings...

Anything about PHP in general, and FuelPHP in particular. Sometimes serious, sometimes with a big wink. But always with a message. Do you have an opinion about an article? Don't forget to comment!

The day the whole Fuel community has been waiting for is finally here. Only 4 months after its conception, Fuel RC1 is now released and ready to use!

We're as excited about the RC1 as we will be about hitting v1.0, maybe even more so. Why? Because RC1 means that as far as we know it's all good. It means Fuel is ready to use and is approaching stability.

Since v1.0.0-beta1 we have changed quite a lot of stuff around based on initial feedback from our great community of developers. Initially it might seem like a pain that we have changed so much, but one of the real strengths of Fuel is its youth. We are in a position to start fresh and do things right, without worrying about legacy code. If we stopped making things awesome just because we didn't want to break a few apps... well it wouldn't be very awesome at all.

Now that we are in a feature freeze and heading to v1.0, legacy code and applications will start to become much more of a concern. We won't be the sort of framework where everything breaks every time the number changes. For example, v1.0.x will be backwards compatible but v1.1 may have some minor changes - which most likely will just be a find and replace across the app folder. v2.0? Well that will be a different story.

So, we mentioned new features but what are they?

ORM

Jelmer has truly outdone himself once again and developed an entire ORM package in the space of a few weeks. This replaces the ActiveRecord package which was sadly feature-weak and based on some inflexible code.

Why did we want a brand new ORM instead of using Doctrine, Propel, etc? Because they are massive, monolithic beasts and often do more than just ORM. Ours is lightweight, uses a sexy syntax, integrates perfectly with the framework and can be extended nicely. Besides all that it means we can have full control over the features moving forward.

Modularity

Fuel has been designed from the ground up to be fully modular, in every aspect. The heart of the framework is the Fuel Core. On top of the core, you will build your application. Every class in the core can be extended or even replaced by code in your application, giving you the flexibility to shape Fuel exactly how you want it to be.

Additional functionality can be added to Fuel using Packages. Packages are either self-contained extensions in their own namespace, or extensions to the core code. Fuel already comes with some great packages, like ORM and Auth, which you can use simply by enabling them in the application configuration.

You can add modularity to your application by using Modules. You can use modules in routed mode, in which case a module will provide a complete set of functionality to your application. You can also access modules through the Request object, allowing you to use them in an HMVC context.

Unit Testing with PHPUnit

We decided to remove our Octane unit testing tool and switch to the de-facto industry standard PHPUnit. Now, PHPUnit is integrated right into Fuel by default and this should allow developers who use PHPUnit to easily migrate from other frameworks to Fuel.

Response Object

We have added a new response object which is a part of every controller. This encapsulates the entire response including the body and headers. It replaces the Output class and allows us to have some more exciting features such as automatic HTTP Caching (this did not make it into v1.0).

Summary

Besides the new features we have generally improved Fuel across the board. Bugs have been squashed, documentation has been drastically improved and we are much, much happier with Fuel now than we were during the Beta.
We strongly urge you to download Fuel and give it a try. Obviously no promises can be made about being 100% stable but what software ever can? Fuel is stable enough that you can start using it to develop your applications, but it should go without saying that any application needs testing before going live anyway.

Any issues can be reported on the issue tracker and thanks to the feature freeze we can focus all our efforts on knocking out bugs as they are reported.

P.S: A massive thank you to the very talented Scott Parry - newest member of the team - for our amazing redesign. He knocked this out in a few days and promises to iterate the heck out of things as we go. He is also working on a new docs design, so watch out for that.