#####################
Model-View-Controller
#####################

CodeIgniter is based on the Model-View-Controller development pattern.
MVC is a software approach that separates application logic from
presentation. In practice, it permits your web pages to contain minimal
scripting since the presentation is separate from the PHP scripting.

-  The **Model** represents your data structures. Typically your model
   classes will contain functions that help you retrieve, insert, and
   update information in your database.
-  The **View** is the information that is being presented to a user. A
   View will normally be a web page, but in CodeIgniter, a view can also
   be a page fragment like a header or footer. It can also be an RSS
   page, or any other type of "page".
-  The **Controller** serves as an *intermediary* between the Model, the
   View, and any other resources needed to process the HTTP request and
   generate a web page.

CodeIgniter has a fairly loose approach to MVC since Models are not
required. If you don't need the added separation, or find that
maintaining models requires more complexity than you want, you can
ignore them and build your application minimally using Controllers and
Views. CodeIgniter also enables you to incorporate your own existing
scripts, or even develop core libraries for the system, enabling you to
work in a way that makes the most sense to you.