22 February 2010 2 Comments

Open Source PHP Framework – CodeIgniter

PHP is currently the 3rd most popular coding language according to the TIOBE Index and accounts for over 10% of the of cumulative search hits for any given programming language across Google, Google Blogs, MSN, Yahoo!, Wikipedia and YouTube. In the age of rapid application development, a web application framework can greatly assist in the construction of a PHP application.  This is exactly where EllisLab‘s CodeIgniter comes into play. Not a huge proponent of frameworks, the creator of PHP, Rasmus Lerdorf , liked CodeIgniter “because it is faster, lighter, and the least like a framework.”  Accordingly, CodeIgniter provides a PHP developers with a set of tools to utilize in construction of their web application.

So What Does CodeIgniter Do?

In short, “give you the tools and groundwork to write PHP programs.” CodeIgniter reduces the amount of overhead and foundational programming required to construct a Web application by providing developers with a logically constructed set of libraries for common tasks in addition to a simple interface. Furthermore, CodeIgniter leverages its small footprint and thorough documentation to facilitate rapid deployment of a PHP Web application.

How Does CodeIgniter Work?

CodeIgniter holds loosely to the Model-View-Controller approach to application architecture, striking a middle-ground between strict convention and no framework at all, while maintaining the separation of presentation and logic. An installation of CodeIgniter contains an application framework that would utilize this systematic flow of data:

What makes CodeIgniter different?

  • Controller functions will denote paths and routes > example.com/class/function/id/
  • Data related concepts are placed in models
  • Models are not required – An understandably contentious point for MVC purists
  • Views control everything visible to the end user

Architectural Goals*:

  • Dynamic Instantiation. In CodeIgniter, components are loaded and routines executed only when requested, rather than globally. No assumptions are made by the system regarding what may be needed beyond the minimal core resources, so the system is very light-weight by default. The events, as triggered by the HTTP request, and the controllers and views you design will determine what is invoked.
  • Loose Coupling. Coupling is the degree to which components of a system rely on each other. The less components depend on each other the more reusable and flexible the system becomes. Our goal was a very loosely coupled system.
  • Component Singularity. Singularity is the degree to which components have a narrowly focused purpose. In CodeIgniter, each class and its functions are highly autonomous in order to allow maximum usefulness.

*Denoted in the User Guide

How Can CodeIgniter Help Me?

In providing a robust set of Web application tools, CodeIgniter allows you to focus on developing the intricacies of your application and saves you the headache of starting from scratch. For both the budding and advanced PHP developer, a framework rapidly speeds up the development process.  On the other hand, knowledge of the CodeIgniter architecture will also alllow you to customize open source applications built using CodeIgniter.

From a development standpoint CodeIgniter will help you if your looking for any or all of these:

  • Apache/BSD-style open source license :: Free to use as you wish.
  • Light-Weight & Fast :: Core system needs only a few libraries and others are loaded dynamically based on your applications requests.
  • M-V-C Architecture :: Separate application presentation and logic.
  • Clean URLS :: Search friendly segmented approach
  • Robust :: Packed full of libraries that enable common tasks (Database, email delivery, form data validation, session maintenance, image manipulation) and more.
  • Extensible :: Plugins and helper libraries available in addition to class extensions or system hooks.
  • No Template Engine Required ::  A simple template parser is included but not necessary.
  • Documentation :: Source Code is extremely well documented and an extensive “User Guide” is available both online and included with the source code.
  • Community :: A large, friendly group of CodeIgniters help, teach, and collaborate in the CodeIgniter Community Forums.

Example applications & sites built with CodeIgniter:

*source code available

How Do I use CodeIgniter?

Assuming you’ve already searched for “<Your application function> CodeIgniter” (why reinvent the wheel?) and your looking to develop your own PHP Web application on CodeIgniter:

Still looking for help?

Note: EllisLab provides the community with special non-staff position called the CodeIgniter Community Chieftain (currently Jamie Rumbelow) who “helps maintain the forums, wiki, and the bug tracker, and acts as a public liaison to the EllisLab development team when necessary.”

In A Nutshell

CodeIgniter provides a wealth of opportunity for PHP developers by enabling. Personally, I use BambooInvoice and have found it to be both simple to use and elegant in results. Furthermore, with the backing of EllisLab, I’m confident CodeIgniter can only gain more ground in the PHP frameworks community. With its small footprint, robust framework, extensive libraries, helpful community forums, and well documented user guide, CodeIgniter lays a firm foundation from which developers can focus on what they do best…developing.

Keep Your Code Hot With CodeIgniter!

Be Sociable, Share!

2 Responses to “Open Source PHP Framework – CodeIgniter”

  1. John Wright 31 March 2010 at 2:01 pm #

    This is a great intro to CodeIgniter and all it’s benefits. I’ve been using CodeIgniter a lot over the last 2 years and I’m very pleased with it.

  2. David Kuhta 31 March 2010 at 7:44 pm #

    I couldn’t agree more John, I’ve been pleased with it as well; A really important element for the success any project is that of community, and EllisLabs has really cultivated quite a league of satisfied CodeIgnitees!


Leave a Reply