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 >
- 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
- 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:
- Content Management System :: ExpressionEngine
- Invoice Management :: BambooInvoice*
- Room Bookings :: Classroombookings*
- Help System & Documentation :: Knowledge Base Script*
- Social Network :: Wittygraphy
- Blog :: Open Blog*
- Q&A Site :: MindZinger
- Stock Portfolio Analysis :: Stockalicious
*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:
- Download the latest version of CodeIgniter
- Follow the installation instructions from the User Guide
- Print Copies of the CodeIgniter Cheatsheets
- Get coding!
Still looking for help?
- Watch the official CodeIgniter Intro and Create Blog in 20 Minutes tutorial videos
- Check out the CodeIgniter User Guide
- Check out the CodeIgniter Wiki
- Ask for help in the CodeIgniter Forums
- Check out the Source Code from some of the applications listed above.
- Order a copy of CodeIgniter 1.7 by Jose Argudo
- Check out 40+ CodeIgniter Framework Tutorials
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.