CodeIgniter is designed to deliver maximum performance in less time within a clean environment. To achieve this, each developing process is designed in a simplified way.
From technical point of view it is dynamically instantiation (libraries are loaded on request which makes it light-weighted), loose coupling. (components rely very less on each other) and component singularity (each class and its functions are narrowly focused only towards their purpose).
Data flow in CodeIgniter
Look at the above snapshot, this flow chart displays data flow in CodeIgniter.