SlideShare a Scribd company logo
CodeIgniter 2.0.0 Adam Griffiths @adam_griffiths adamgriffiths.co.uk [email_address] bitbucket.org/adamgriffiths/
Who am I? Author of programmersvoice.com AG Auth - Easiest Auth Library for CI AG Asset - simple Asset Management Library Author of CodeIgniter 1.7 Professional Development
CodeIgniter 2.0.0 What’s been removed What’s been deprecated What’s changed What’s new Tips for upgrading
What’s been removed
Goodbye Scaffolding Deprecated for a number of versions Wasn’t a very good implementation Has now been removed for CodeIgniter 2.0.0
Au revoir Plugins Removed in favour of Helpers Nobody was ever sure what they were for Plugins & Helpers were too similar You should update your Plugins to Helpers
Validation Class Deprecated since 1.7.0 More powerful Form Validation Class should be used instead
Deprecations
PHP 4 Support now dropped for PHP 4 YAY!! New CI 2 features may not support PHP 4 All legacy features will no longer support PHP 4 as of 2.1.0
Changes...
Application Directory How many of you move your application directory out of the system directory? That won’t be an issue in CI2
index.php Configuration values can now be stored here. Allows a single application to have multiple front controllers with different configuration values. Routing overrides now added. Limits your application to one controller.
What’s new?
Drivers New type of library Parent class and any number of child classes CI Database Library could be a Driver
Using Drivers $this -> load -> driver ( ‘driver_name’ ); $this -> driver_name -> method (); $this -> driver_name -> subclass -> subclass_method ();
Creating a Driver
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
Parser.php Class <?php class  Parser   extends   CI_Driver_Library  { }  // class ?>
Parser.php Class <?php class  Parser   extends   CI_Driver_Library  { }  // class ?>
Parser.php Class <?php class  Parser   extends   CI_Driver_Library  { }  // class ?>
<?php class  Parser   extends   CI_Driver_Library  { function __construct() { $this -> valid_drivers  = array( 'parser_dwoo', ‘parser_smarty’ ); }  // _construct() }  // class ?>
function __construct() { $this -> valid_drivers  = array( 'parser_dwoo', ‘parser_smarty’ ); }  // _construct()
Parser_dwoo.php Class <?php class  Parser_dwoo   extends   CI_Driver  { }  // class ?>
Parser_dwoo.php Class <?php class  Parser_dwoo   extends   CI_Driver  { }  // class ?>
Parser_dwoo.php Class <?php class  Parser_dwoo   extends   CI_Driver  { }  // class ?>
Packages Allows for easy distribution of resources in a single directory. Can have it’s own library files, models, config files etc. Placed in  application/third_party MojoMotor addons are packages
Creating a Package
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
Add Package Path Before you can load a package, you need to tell the Loader where to look for it. $this -> load -> add_package_path ( APPPATH . 'third_party/package_name/' ); $this -> load -> library ( ‘package_name’ );
Remove Package Path When finished using a Packages resources. When you want to use multiple Packages. $this -> load -> remove_package_path ( APPPATH . 'third_party/package_name/' );
Package View Files Disclaimer: not finished Save the original view path Set the view path to that of the Package Load views, etc Set the path back to the original
// ... save the original view path, and set to our package view folder $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path; $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path; $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path;
Mercurial/BitBucket In development code is now hosted on BitBucket Easier to get *your* code in the CI core Allows community to help squish bugs No SVN!! (Sorry but I really do hate Subversion)
Quick and Dirty Mercurial Tutorial
The Basics hg init hg pull <url> hg pull <constant> hg pull <path/to/local/repo> hg update
Continued... hg diff hg add . hg add <path/to/file> hg commit -m “Commit Message” hg push <url> hg push <constant>
.hgrc file mate $HOME/.hgrc [paths] ci_master =  http://bitbucket.org/ellislab/codeigniter/
Upgrading Tips
Upgrading your Models CodeIgniter 1.7.2 Models extend  Model CodeIgniter 2.0.0 Models extend  CI_Model
Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class  Model  extends  CI_Model { function __construct() { parent::__construct(); }  // construct() }  // class ?>
Controllers Controllers are currently unchanged Ellis Lab are evaluating changing the Controller class from  Controller  to  CI_Controller
Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class  Controller  extends  CI_Controller { function __construct() { parent::__construct(); }  // construct() }  // class ?>
Summary Plugins, Validation Library & Scaffolding have been removed PHP 4 support dropped Drivers & Packages Model Class renamed Mercurial/Bitbucket
Q & A @adam_griffiths Skype: adam-griffiths [email_address] www.adamgriffiths.co.uk www.bitbucket.org/adamg riffiths/

More Related Content

PDF
170517 damien gérard framework facebook
PDF
The new features of PHP 7
PDF
Getting started with go - Florin Patan - Codemotion Milan 2016
PPTX
Service approach for development Rest API in Symfony2
PDF
How To Structure Go Applications - Paul Bellamy - Codemotion Milan 2016
PDF
TYPO3 Flow 2.0 (International PHP Conference 2013)
PPTX
Laravel 5
170517 damien gérard framework facebook
The new features of PHP 7
Getting started with go - Florin Patan - Codemotion Milan 2016
Service approach for development Rest API in Symfony2
How To Structure Go Applications - Paul Bellamy - Codemotion Milan 2016
TYPO3 Flow 2.0 (International PHP Conference 2013)
Laravel 5

What's hot (20)

PPTX
Service approach for development REST API in Symfony2
PDF
Flask RESTful Flask HTTPAuth
PDF
4 introduction-php-mvc-cakephp-m4-controllers-slides
PDF
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
PDF
CakePHP
PDF
Basic Crud In Django
PDF
Getting started-with-zend-framework
PPTX
CakePHP - Admin Acl Controlled
ODP
Zen and the Art of Claroline Module Development
PPTX
A peek into the world of WordPress plugin development
PDF
Behaviour Driven Development con Behat & Drupal
PDF
TYPO3 Extension development using new Extbase framework
ODP
Ant User Guide
PDF
Caching in a multilanguage environment
PDF
ACL in CodeIgniter
PDF
Flask Introduction - Python Meetup
PDF
Flask Basics
PPTX
PDF
Django
PDF
Software Development Automation With Scripting Languages
Service approach for development REST API in Symfony2
Flask RESTful Flask HTTPAuth
4 introduction-php-mvc-cakephp-m4-controllers-slides
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
CakePHP
Basic Crud In Django
Getting started-with-zend-framework
CakePHP - Admin Acl Controlled
Zen and the Art of Claroline Module Development
A peek into the world of WordPress plugin development
Behaviour Driven Development con Behat & Drupal
TYPO3 Extension development using new Extbase framework
Ant User Guide
Caching in a multilanguage environment
ACL in CodeIgniter
Flask Introduction - Python Meetup
Flask Basics
Django
Software Development Automation With Scripting Languages
Ad

Similar to CICON2010: Adam Griffiths - CodeIgniter 2 (20)

PDF
Intro to WordPress Plugin Development
PDF
Write your first WordPress plugin
PPTX
Getting started with WordPress development
PDF
Creating Your First WordPress Plugin
ODP
CodeIgniter PHP MVC Framework
PPT
Maven 2.0 - Project management and comprehension tool
ODP
Zend Framework 1.9 Setup & Using Zend_Tool
PPT
Pluggin creation
PDF
Ext 0523
PPTX
Yii in action
PPT
How to? Drupal developer toolkit. Dennis Povshedny.
PPTX
WordPress Structure and Best Practices
PDF
Wordpress development: A Modern Approach
PDF
Intro To Mvc Development In Php
ODP
Drupal development
PPTX
WordPress 3.0 at DC PHP
ODP
Laravel 5.3 - Web Development Php framework
PDF
Php Documentor The Beauty And The Beast
PPT
Create a web-app with Cgi Appplication
Intro to WordPress Plugin Development
Write your first WordPress plugin
Getting started with WordPress development
Creating Your First WordPress Plugin
CodeIgniter PHP MVC Framework
Maven 2.0 - Project management and comprehension tool
Zend Framework 1.9 Setup & Using Zend_Tool
Pluggin creation
Ext 0523
Yii in action
How to? Drupal developer toolkit. Dennis Povshedny.
WordPress Structure and Best Practices
Wordpress development: A Modern Approach
Intro To Mvc Development In Php
Drupal development
WordPress 3.0 at DC PHP
Laravel 5.3 - Web Development Php framework
Php Documentor The Beauty And The Beast
Create a web-app with Cgi Appplication
Ad

CICON2010: Adam Griffiths - CodeIgniter 2

  • 1. CodeIgniter 2.0.0 Adam Griffiths @adam_griffiths adamgriffiths.co.uk [email_address] bitbucket.org/adamgriffiths/
  • 2. Who am I? Author of programmersvoice.com AG Auth - Easiest Auth Library for CI AG Asset - simple Asset Management Library Author of CodeIgniter 1.7 Professional Development
  • 3. CodeIgniter 2.0.0 What’s been removed What’s been deprecated What’s changed What’s new Tips for upgrading
  • 5. Goodbye Scaffolding Deprecated for a number of versions Wasn’t a very good implementation Has now been removed for CodeIgniter 2.0.0
  • 6. Au revoir Plugins Removed in favour of Helpers Nobody was ever sure what they were for Plugins & Helpers were too similar You should update your Plugins to Helpers
  • 7. Validation Class Deprecated since 1.7.0 More powerful Form Validation Class should be used instead
  • 9. PHP 4 Support now dropped for PHP 4 YAY!! New CI 2 features may not support PHP 4 All legacy features will no longer support PHP 4 as of 2.1.0
  • 11. Application Directory How many of you move your application directory out of the system directory? That won’t be an issue in CI2
  • 12. index.php Configuration values can now be stored here. Allows a single application to have multiple front controllers with different configuration values. Routing overrides now added. Limits your application to one controller.
  • 14. Drivers New type of library Parent class and any number of child classes CI Database Library could be a Driver
  • 15. Using Drivers $this -> load -> driver ( ‘driver_name’ ); $this -> driver_name -> method (); $this -> driver_name -> subclass -> subclass_method ();
  • 17. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 18. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 19. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 20. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 21. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 22. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 23. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 24. File Structure application/ libraries/ driver_name/ Driver_name.php drivers/ Driver_name_subclass_1.php Driver_name_subclass_2.php
  • 25. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 26. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 27. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 28. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 29. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 30. Parser File Structure application/ libraries/ Parser/ Parser.php drivers/ Parser_dwoo.php Parser_smarty.php
  • 31. Parser.php Class <?php class Parser extends CI_Driver_Library { } // class ?>
  • 32. Parser.php Class <?php class Parser extends CI_Driver_Library { } // class ?>
  • 33. Parser.php Class <?php class Parser extends CI_Driver_Library { } // class ?>
  • 34. <?php class Parser extends CI_Driver_Library { function __construct() { $this -> valid_drivers = array( 'parser_dwoo', ‘parser_smarty’ ); } // _construct() } // class ?>
  • 35. function __construct() { $this -> valid_drivers = array( 'parser_dwoo', ‘parser_smarty’ ); } // _construct()
  • 36. Parser_dwoo.php Class <?php class Parser_dwoo extends CI_Driver { } // class ?>
  • 37. Parser_dwoo.php Class <?php class Parser_dwoo extends CI_Driver { } // class ?>
  • 38. Parser_dwoo.php Class <?php class Parser_dwoo extends CI_Driver { } // class ?>
  • 39. Packages Allows for easy distribution of resources in a single directory. Can have it’s own library files, models, config files etc. Placed in application/third_party MojoMotor addons are packages
  • 41. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 42. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 43. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 44. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 45. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 46. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 47. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 48. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 49. Package File Structure application/ third_party/ package_name/ config/ helpers/ language/ libraries/ models/
  • 50. Add Package Path Before you can load a package, you need to tell the Loader where to look for it. $this -> load -> add_package_path ( APPPATH . 'third_party/package_name/' ); $this -> load -> library ( ‘package_name’ );
  • 51. Remove Package Path When finished using a Packages resources. When you want to use multiple Packages. $this -> load -> remove_package_path ( APPPATH . 'third_party/package_name/' );
  • 52. Package View Files Disclaimer: not finished Save the original view path Set the view path to that of the Package Load views, etc Set the path back to the original
  • 53. // ... save the original view path, and set to our package view folder $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path; $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path; $orig_view_path = $this->load->_ci_view_path;$this->load->_ci_view_path = APPPATH.'third_party/package_name/views/';// ... code using the package's view files// ... then return the view path to the application's original view path$this->load->_ci_view_path = $orig_view_path;
  • 54. Mercurial/BitBucket In development code is now hosted on BitBucket Easier to get *your* code in the CI core Allows community to help squish bugs No SVN!! (Sorry but I really do hate Subversion)
  • 55. Quick and Dirty Mercurial Tutorial
  • 56. The Basics hg init hg pull <url> hg pull <constant> hg pull <path/to/local/repo> hg update
  • 57. Continued... hg diff hg add . hg add <path/to/file> hg commit -m “Commit Message” hg push <url> hg push <constant>
  • 58. .hgrc file mate $HOME/.hgrc [paths] ci_master = http://bitbucket.org/ellislab/codeigniter/
  • 60. Upgrading your Models CodeIgniter 1.7.2 Models extend Model CodeIgniter 2.0.0 Models extend CI_Model
  • 61. Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class Model extends CI_Model { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 62. Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class Model extends CI_Model { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 63. Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class Model extends CI_Model { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 64. Lazy mans Model Upgrade Create a new Library file: MY_Model.php <?php class Model extends CI_Model { function __construct() { parent::__construct(); } // construct() } // class ?>
  • 65. Controllers Controllers are currently unchanged Ellis Lab are evaluating changing the Controller class from Controller to CI_Controller
  • 66. Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class Controller extends CI_Controller { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 67. Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class Controller extends CI_Controller { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 68. Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class Controller extends CI_Controller { function __construct() { parent ::__construct(); } // construct() } // class ?>
  • 69. Lazy mans Controller Upgrade Create a new Library file: MY_Controller.php <?php class Controller extends CI_Controller { function __construct() { parent::__construct(); } // construct() } // class ?>
  • 70. Summary Plugins, Validation Library & Scaffolding have been removed PHP 4 support dropped Drivers & Packages Model Class renamed Mercurial/Bitbucket
  • 71. Q & A @adam_griffiths Skype: adam-griffiths [email_address] www.adamgriffiths.co.uk www.bitbucket.org/adamg riffiths/

Editor's Notes

  • #2: Hello, I’m going to be talking to you today about CodeIgniter 2, the in development version of CodeIgniter. My name is Adam Griffiths and before I dive into my talk I wanted to go through who I am and why you should listen to me!
  • #3: Ok so I’m Adam Griffiths. I created and authored all of the tutorials on Programmers Voice. This was a hugely popular CodeIgniter focussed tutorial blog where I posted tutorials, articles and screencasts on CodeIgniter and supplementary subjects such as jQuery and Git. I am the guy behind AG Auth, quite possibly the eaisest Authentication Library for CodeIgniter, just extend a new Controller class to get a full authentication system with admin panel! I also created AG Asset, another simple library that enables you to manage your CSS files, images and script files and provides an easy way to pre-load CSS and JavaScript if you have a lot of files to include. Finally I am the author of CodeIgniter 1.7 Professional Development, the first advanced book on CodeIgniter covering topics such as User Authentication, Twitter oAuth, Facebook Connect, Web Services and REST, and a neat little chapter with ym tips on releasing code to the community.
  • #4: On with the talk. So, CodeIgniter 2. It’s a bit of a jump from 1.7.2. In this talk I’m going to take you though all of the things that have been removed (and what you should use in it’s place), everything that’s now deprecated. We’ll also look at all the changes in CodeIgniter 2 and finally all the new goodies we get to play with. I’ll also give you a few tips for upgrading your projects to CodeIgniter 2.
  • #6: Goodbye Scaffolding. Scaffolding was a way to easily create records in your database, kind of like a mini PHPMyAdmin. But it wasn’t a very good implementation. You would set a scaffolding key and turn it on in your controllers, but if somebody knew your key they could easily start to mess around with your data if you didn’t turn it off on a production server. Scaffolding has now been removed for CodeIgniter 2.0.0.
  • #7: Au revoir plugins. Now I didn’t really expect plugins to be removed without first being deprecated, but I’m not all that surprised it’s been removed either. Plugins have been removed in favour of helpers, and now many people knew what plugins were for. I know that plugins were supposed to be community created and be single purpose, they should have only one function in them. Helpers were supposed to be created by EllisLab and be more official and multi-purpose. But people used the two interchangably as they were extremely similar to each other. So if you’re still using plugins you should update these to be helpers.
  • #8: The Validation Class has also been removed after being deprecated since v 1.7.0. Version 1.7.0 saw the Form Validation Class being added to the framework in place of the Validation Class. Therefore you should use the more powerful Form Validation Class.
  • #10: PHP 4! There have been numerous forum posts, tweets, blog posts and I have even had a few emails asking when CodeIgniter was going to drop support for PHP 4. Ellis Lab have always said they will only drop support for PHP 4 when the user base becomes small enough that when the change occurs they’re not putting a considerable amount of developers out in the cold. New CodeIgniter 2 features may not support PHP 4, it might work but nobody cares. All legacy features will no longer have support for PHP 4 as of 2.1.0.
  • #12: Ok so a quick show of hands. How many of us here move the application directory out of the system directory before starting a project? This won’t be an issue in CI 2 as the application directory now exists in the top level alongside the system folder and the index.php front controller. I know it’s never been exactly hard to move the application directory, you literally just move it, no need to edit any settings but Ellis Lab have obviously seen that a lot of people do this anyway, and it’s always good to have clear separation so in CodeIgniter 2, we’ll be able to just jump into the code rather than spend (albeit a minute) time moving directories.
  • #13: Ok so onto the index.php front controller. Nothing major has been changed here but there’s a few things you might like to know. You can now store configuration values in this file. This allows you to share one application between multiple front controllers using different configuration values. Routing overrides have now been added to this file as well. This allows you to set your default controller in this file rather than your routes.php configuration file. However, using this method will limit your application to one controller, although you will still be able to call different functions in that controller.
  • #14: Ok so now we’re getting into the good stuff. So what’s new?
  • #15: We’ll kick this section off with a biggy. Drivers. Drivers are a new type of library with CodeIgniter 2.0.0. They allow you to have a parent class with any number of child classes. Children can access functions of their parent, but not their siblings. An example of a library that would take advantage of this new type of library is the Database Library.
  • #55: Ellis Lab have now started to host their in-development code on BitBucket, the github for mercurial hosting. Mercurial is a distributed version control system much like git. This is good for a few reasons. Firstly it’s easier to get your own code in the CodeIgniter core. Whereas it was possible before it’s much easier to issue a pull request than the older channels. It also allows the community to help squish bugs, and in a few cases a community member has been given responsibility for a few support tickets. And finally, no subversion!! I really hate SVN, so this is the best thing for me!! :)