SlideShare une entreprise Scribd logo
1  sur  71
CodeIgniter 2.0.0 ,[object Object],@adam_griffiths adamgriffiths.co.uk [email_address] bitbucket.org/adamgriffiths/
Who am I? ,[object Object],[object Object],[object Object],[object Object]
CodeIgniter 2.0.0 ,[object Object],[object Object],[object Object],[object Object],[object Object]
What’s been removed
Goodbye Scaffolding ,[object Object],[object Object],[object Object]
Au revoir Plugins ,[object Object],[object Object],[object Object],[object Object]
Validation Class ,[object Object],[object Object]
Deprecations
PHP 4 ,[object Object],[object Object],[object Object],[object Object]
Changes...
Application Directory ,[object Object],[object Object]
index.php ,[object Object],[object Object],[object Object],[object Object]
What’s new?
Drivers ,[object Object],[object Object],[object Object]
Using Drivers ,[object Object],[object Object],[object Object]
Creating a Driver
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser File Structure ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Parser.php Class ,[object Object],[object Object],[object Object],[object Object]
Parser.php Class ,[object Object],[object Object],[object Object],[object Object]
Parser.php Class ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Parser_dwoo.php Class ,[object Object],[object Object],[object Object],[object Object]
Parser_dwoo.php Class ,[object Object],[object Object],[object Object],[object Object]
Parser_dwoo.php Class ,[object Object],[object Object],[object Object],[object Object]
Packages ,[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object]
Remove Package Path ,[object Object],[object Object],[object Object]
Package View Files ,[object Object],[object Object],[object Object],[object Object],[object Object]
// ... 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 ,[object Object],[object Object],[object Object],[object Object]
Quick and Dirty Mercurial Tutorial
The Basics ,[object Object],[object Object],[object Object],[object Object],[object Object]
Continued... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
.hgrc file ,[object Object],[object Object],[object Object]
Upgrading Tips
Upgrading your Models ,[object Object],[object Object]
Lazy mans Model Upgrade ,[object Object],<?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade ,[object Object],<?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade ,[object Object],<?php class  Model  extends  CI_Model { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Model Upgrade ,[object Object],<?php class  Model  extends  CI_Model { function __construct() { parent::__construct(); }  // construct() }  // class ?>
Controllers ,[object Object],[object Object]
Lazy mans Controller Upgrade ,[object Object],<?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade ,[object Object],<?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade ,[object Object],<?php class  Controller  extends  CI_Controller { function __construct() { parent ::__construct(); }  // construct() }  // class ?>
Lazy mans Controller Upgrade ,[object Object],<?php class  Controller  extends  CI_Controller { function __construct() { parent::__construct(); }  // construct() }  // class ?>
Summary ,[object Object],[object Object],[object Object],[object Object],[object Object]
Q & A ,[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2Sumy PHP User Grpoup
 
Flask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthFlask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthEueung Mulyana
 
4 introduction-php-mvc-cakephp-m4-controllers-slides
4 introduction-php-mvc-cakephp-m4-controllers-slides4 introduction-php-mvc-cakephp-m4-controllers-slides
4 introduction-php-mvc-cakephp-m4-controllers-slidesMasterCode.vn
 
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...Edureka!
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Djangomcantelon
 
Getting started-with-zend-framework
Getting started-with-zend-frameworkGetting started-with-zend-framework
Getting started-with-zend-frameworkMarcelo da Rocha
 
CakePHP - Admin Acl Controlled
CakePHP - Admin Acl ControlledCakePHP - Admin Acl Controlled
CakePHP - Admin Acl ControlledLuís Fred
 
Zen and the Art of Claroline Module Development
Zen and the Art of Claroline Module DevelopmentZen and the Art of Claroline Module Development
Zen and the Art of Claroline Module DevelopmentClaroline
 
A peek into the world of WordPress plugin development
A peek into the world of WordPress plugin developmentA peek into the world of WordPress plugin development
A peek into the world of WordPress plugin developmentR-Cubed Design Forge
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkTYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkChristian Trabold
 
Caching in a multilanguage environment
Caching in a multilanguage environmentCaching in a multilanguage environment
Caching in a multilanguage environmentelliando dias
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgnitermirahman
 
Flask Introduction - Python Meetup
Flask Introduction - Python MeetupFlask Introduction - Python Meetup
Flask Introduction - Python MeetupAreski Belaid
 
Software Development Automation With Scripting Languages
Software Development Automation With Scripting LanguagesSoftware Development Automation With Scripting Languages
Software Development Automation With Scripting LanguagesIonela
 

Tendances (20)

Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2
 
Flask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuthFlask RESTful Flask HTTPAuth
Flask RESTful Flask HTTPAuth
 
4 introduction-php-mvc-cakephp-m4-controllers-slides
4 introduction-php-mvc-cakephp-m4-controllers-slides4 introduction-php-mvc-cakephp-m4-controllers-slides
4 introduction-php-mvc-cakephp-m4-controllers-slides
 
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...
 
CakePHP
CakePHPCakePHP
CakePHP
 
Basic Crud In Django
Basic Crud In DjangoBasic Crud In Django
Basic Crud In Django
 
Getting started-with-zend-framework
Getting started-with-zend-frameworkGetting started-with-zend-framework
Getting started-with-zend-framework
 
CakePHP - Admin Acl Controlled
CakePHP - Admin Acl ControlledCakePHP - Admin Acl Controlled
CakePHP - Admin Acl Controlled
 
Zen and the Art of Claroline Module Development
Zen and the Art of Claroline Module DevelopmentZen and the Art of Claroline Module Development
Zen and the Art of Claroline Module Development
 
A peek into the world of WordPress plugin development
A peek into the world of WordPress plugin developmentA peek into the world of WordPress plugin development
A peek into the world of WordPress plugin development
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkTYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase framework
 
Ant User Guide
Ant User GuideAnt User Guide
Ant User Guide
 
Caching in a multilanguage environment
Caching in a multilanguage environmentCaching in a multilanguage environment
Caching in a multilanguage environment
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 
Flask Introduction - Python Meetup
Flask Introduction - Python MeetupFlask Introduction - Python Meetup
Flask Introduction - Python Meetup
 
Flask Basics
Flask BasicsFlask Basics
Flask Basics
 
Flask
FlaskFlask
Flask
 
Django
DjangoDjango
Django
 
Software Development Automation With Scripting Languages
Software Development Automation With Scripting LanguagesSoftware Development Automation With Scripting Languages
Software Development Automation With Scripting Languages
 

Similaire à CICON2010: Adam Griffiths - CodeIgniter 2

Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentBrad Williams
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress pluginAnthony Montalbano
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress developmentSteve Mortiboy
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress PluginBrad Williams
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkBo-Yi Wu
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolelliando dias
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolGordon Forsythe
 
Yii in action
Yii in actionYii in action
Yii in actionKeaNy Chu
 
How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.DrupalCampDN
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practicesmarkparolisi
 
Wordpress development: A Modern Approach
Wordpress development:  A Modern ApproachWordpress development:  A Modern Approach
Wordpress development: A Modern ApproachAlessandro Fiore
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Phpfunkatron
 
WordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPWordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPandrewnacin
 
Php Documentor The Beauty And The Beast
Php Documentor The Beauty And The BeastPhp Documentor The Beauty And The Beast
Php Documentor The Beauty And The BeastBastian Feder
 
Create a web-app with Cgi Appplication
Create a web-app with Cgi AppplicationCreate a web-app with Cgi Appplication
Create a web-app with Cgi Appplicationolegmmiller
 

Similaire à CICON2010: Adam Griffiths - CodeIgniter 2 (20)

Intro to WordPress Plugin Development
Intro to WordPress Plugin DevelopmentIntro to WordPress Plugin Development
Intro to WordPress Plugin Development
 
Write your first WordPress plugin
Write your first WordPress pluginWrite your first WordPress plugin
Write your first WordPress plugin
 
Getting started with WordPress development
Getting started with WordPress developmentGetting started with WordPress development
Getting started with WordPress development
 
Creating Your First WordPress Plugin
Creating Your First WordPress PluginCreating Your First WordPress Plugin
Creating Your First WordPress Plugin
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
 
Pluggin creation
Pluggin creationPluggin creation
Pluggin creation
 
Ext 0523
Ext 0523Ext 0523
Ext 0523
 
Yii in action
Yii in actionYii in action
Yii in action
 
How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practices
 
Wordpress development: A Modern Approach
Wordpress development:  A Modern ApproachWordpress development:  A Modern Approach
Wordpress development: A Modern Approach
 
Intro To Mvc Development In Php
Intro To Mvc Development In PhpIntro To Mvc Development In Php
Intro To Mvc Development In Php
 
Drupal development
Drupal development Drupal development
Drupal development
 
Ci2
Ci2Ci2
Ci2
 
WordPress 3.0 at DC PHP
WordPress 3.0 at DC PHPWordPress 3.0 at DC PHP
WordPress 3.0 at DC PHP
 
Laravel 5.3 - Web Development Php framework
Laravel 5.3 - Web Development Php frameworkLaravel 5.3 - Web Development Php framework
Laravel 5.3 - Web Development Php framework
 
Php Documentor The Beauty And The Beast
Php Documentor The Beauty And The BeastPhp Documentor The Beauty And The Beast
Php Documentor The Beauty And The Beast
 
Create a web-app with Cgi Appplication
Create a web-app with Cgi AppplicationCreate a web-app with Cgi Appplication
Create a web-app with Cgi Appplication
 

CICON2010: Adam Griffiths - CodeIgniter 2

  • 1.
  • 2.
  • 3.
  • 5.
  • 6.
  • 7.
  • 9.
  • 11.
  • 12.
  • 14.
  • 15.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 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.
  • 51.
  • 52.
  • 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.
  • 55. Quick and Dirty Mercurial Tutorial
  • 56.
  • 57.
  • 58.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.

Notes de l'éditeur

  1. 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!
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Ok so now we’re getting into the good stuff. So what’s new?
  11. 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.
  12. 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!! :)