| ############################## |
| Design and Architectural Goals |
| ############################## |
| |
| Our goal for CodeIgniter is maximum performance, capability, and |
| flexibility in the smallest, lightest possible package. |
| |
| To meet this goal we are committed to benchmarking, re-factoring, and |
| simplifying at every step of the development process, rejecting anything |
| that doesn't further the stated objective. |
| |
| From a technical and architectural standpoint, CodeIgniter was created |
| with the following objectives: |
| |
| - **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. |
| |
| CodeIgniter is a dynamically instantiated, loosely coupled system with |
| high component singularity. It strives for simplicity, flexibility, and |
| high performance in a small footprint package. |