David Kuhta

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?

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.

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.

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.

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!