Join Jon Peck for an in-depth discussion in this video What is CodeIgniter and why should I use it?, part of Learning PHP CodeIgniter (2013).
Before I jump directly into describing what CodeIgniter is, let's take a step back and look at how developers typically learn a new language. I found that people tend to go though a number of common stages as their skills grow and improve. The first stage is basic structure and syntax, where a program can be written that can go from start to finish without any major failures. Next comes in understanding of the vocabulary and functionality of the language. There's a lot less guess work and more certainty about what can and cannot be done. Once they're comfortable with that foundation, it could be expanded with knowledge of development techniques and relations of the language features.
The final stage, excluding actually developing the language itself, contains scalable programming structures and architecture. Including design patterns, libraries and knowledge of APIs and so forth. This is where development speed really comes into play rather than reinventing the wheel, a programmer can focus on building components that deliver value. I personally place CodeIgniter at this final stage. Why is that? CodeIgniter is an open-source PHP web application framework which can be used for rapid development without the overhead of having to constantly build reusable components.
Providing both a logical structure and a reusable interface to libraries written to perform common tasks. CodeIgniter provides a fast extensible foundation for writing complex software. Some of the key features include, a small footprint meaning that its lightweight and has very little overhead. Which lends itself towards fast performance especially when its compared to other frameworks. It's also easy to get going requiring almost no configuration to get started. Originally released in 2006, Codelgniter has reached an adoption rate and a maturity that makes it a production-ready candidate for the basis of your next project.
In 2008, PHP creator Rasmus Lerdorf praised Codelgniter because it's faster, lighter, and least like a framework. But, why should I use somebody else's work? Consider creating your own framework. While nobody will prevent you from writing your own programming framework. Ask yourself, is this really the best use of my time? Are you going to review your work with thousands of other developers? What's your bug reporting process and testing methodology? What about security and penetration testing? Finally, do you want to have to build each new piece of functionality from scratch every time you want to do something new? I could go on, but I'm trying to get to three basic points. Why? Reusability and modularity, where I'm avoiding copying and pasting code.
Components can be reused on multiple projects leveraging a common interface. Next is maintainability, which is particularly important if you want others to be able to easily build upon or extend your application. If their familiar with Codelgniter and you've used the recommended structures, they shouldn't have any problem understanding your code. Finally is delegation. You want to focus on delivering value, not creating the building blocks for repetitive or common tasks that others have already completed. Codelgniter uses a loose MVC development pattern for organizing code and logic. MVC stands for Model-View-Controller, which looks great on a resume, but what does this really mean?
Starting with the what and why of CodeIgniter, Jon introduces key concepts such as the MVC pattern and libraries by demonstrating how to create static pages, then storing and displaying magazine info in a database. Advanced topics like classes and helpers are explored to validate user input, upload files, and much more. By creating a complete system, you'll have the foundation to build your own applications with CodeIgniter.
- What is CodeIgniter?
- Creating a static page controller
- Generating output with a view
- What is a model?
- Saving data with Active Records
- Creating forms
- Validating user input
- Listing records in tables
- Uploading images
- Viewing and deleting records