Like the Zend Framework, CodeIgniter uses the front-end controller pattern. All HTTP requests are received by index.php, sent to the proper processing routines through a routing system, passed through a security system (which shields the application's controllers from malicious input), then finally handed to a controller. The controller loads the model, processes the request, and sends the result to the view system.
CodeIgniter helpers, libraries, extensions
A class extension is -- as its name implies -- simply the PHP mechanism for extending the instance variables and methods of an existing class to provide specialized capabilities. Finally, CodeIgniter hooks let you alter the behavior of the framework itself, without having to hack into the code. You define a hook by specifying a hooking point. For example, the pre_system hooking point attaches the hook early in the process of system execution, while the post_system hooking point lets you inject behavior after the Web page has been rendered. You then associate class and method, as well as the file path to the class and method that you want invoked. When the application's execution hits the hooking point, CodeIgniter will dynamically load and execute your code.