Upgrading a CodeIgniter 1.x site to CodeIgniter 2.0
Hallelujah! CodeIgniter has finally released version 2.0.0 after a very long and patient wait, as a stable, production ready framework.
What do you need to know?
There are a few new items in 2.0 which you can read in more detail about on their website, however the main points to note if you are planning an upgrade are:
- PHP4 support is gone, the lowest version of PHP supported is 5.1
- The validation class (which was deprecated) has been completely removed, the form_validation class has taken over
- Scaffolding has been removed (this was also deprecated)
- Plugins have been removed, Helpers are to be used instead
What do you need to do?
As always, take a full backup before you make any changes so you can rollback.
Download the latest version of CodeIgniter Reactor and extract it somewhere on your computer.
Hopefully you've only made changes to the files in the system/application folder. If you've made changes to anything else in the system folder, you'll need to go back and move those changes to where they should be in the system/application folder before you can move forward.
The system/application folder in 2.0 has been moved to the top level, so first thing you need to do is move your system/application folder to sit in the root alongside the system folder.
Now delete the system folder.
You've now removed the CodeIgniter base, simply swap in the system folder that you downloaded from the CodeIgniter site, add the following additional files from the download into your site, and we're ready to move on to a few convention changes.
- application/ config/profiler.php
In each of your controllers and models, (unless you've created your own base controller to extend, in which case you only need to update your base controller) you are probably doing something like
class user_model extends Model
You'll need to go through and change this to
class user_model extends CI_Model
The same goes for controllers, whereby instead of extending Controller, you need to now extend CI_Controller
Change your plugins to helpers
If you've written or downloaded any plugins to use on your site, you're going to have to convert them into helpers. It's a pretty simple change, just move the files in the plugins folder to the helpers folder, rename them from xxx_pi.php to xxx_helper.php. Then update your config.php file to make sure you are autoloading the same files as before but now as helpers. That's it!
Move over to Form Validation
You can in theory get the old validation.php file from the 1.7.2 version of CodeIgniter and place it in your application/libraries folder and be done with it. However, if you can spare the time it's more beneficial to use the new Form Validation class as you'll be able to take advantage of the much neater code and also keep on top of any updates and improvements made over time. When working with user data, keeping on top of security releases can be a pretty important thing. The small amount of effort is worth it.
You've just upgraded to a version 2.0 base. Now you need to give everything on your site a thorough test to make sure that everything is in working order.
There are a few more left field items, but for 90% of sites out there using CodeIgniter 1.7.2 this will cover you for making the upgrade pretty painlessly.
If you do get stuck, remember there's a very active userbase on the CodeIgniter forums only too happy to help out.