CodeIgniter - Libraries

The essential part of a CodeIgniter framework is its libraries. It provides a rich set of libraries, which indirectly increase the speed of developing an application. The system library is located at system/libraries. All we need to do is to load the library that we want to use. The library can be loaded as shown below −

$this->load->library('class name');

Where class name is the name of the library that we want to load. If we want to load multiple libraries, then we can simply pass an array as argument to library() function as shown below −

$this->load->library(array('email', 'table'));

Library Classes

The library classes are located in system/libraries. Each class has various functions to simplify the developing work. Following table shows the names of the library class and its description.

S.N. Library Class & Description

Benchmarking Class

Benchmarking class is always active, enabling the time difference between any two marked points to be calculated.


Caching Class

This class will cache the pages, to quickly access the page speed.


Calendaring Class

Using this class, you can dynamically create calendars.


Shopping Cart Class

Using this class, you can add or remove item from Shopping Cart. The items are saved in session and will remain active until the user is browsing the site.


Config Class

Configuration preferences can be retrieved, using this class. This class is initialized automatically.


Email Class

This class provides email related functionality, like send or reply to email.


Encryption Class

This class provides two-way data encryption functionality.


File Uploading Class

This class provides functionalities related to file uploading. You can set various preferences like type of file to be uploaded, size of the files etc.


Form Validation Class

This class provides various functions to validate form.


FTP Class

This class provides various FTP related functions like transferring files to remove server, moving, renaming or deleting files on server.


Image Manipulation Class

Manipulation of image like resize, thumbnail creation, cropping, rotating, watermarking can be done with the help of this class.


Input Class

This class pre-processes the input data for security reason.


Language Class

This class is used for internationalization.


Loader Class

This class loads elements like View files, Drivers, Helpers, Models etc.


Migrations Class

This class provides functionalities related to database migrations.


Output Class

This class sends the output to browser and also, caches that webpage.


Pagination Class

This class adds pagination functionalities to web page.


Template Parser Class

The Template Parser Class can perform simple text substitution for pseudo-variables contained within your view files. It can parse simple variables or variable tag pairs.


Security Class

This class contains security related functions like XSS Filtering, CSRF etc.


Session Library

This class provides functionalities to maintain session of your application.


HTML Table

This class is used to auto-generate HTML tables from array or database results.


Trackback Class

The Trackback Class provides functions that enable you to send and receive Trackback data.


Typography Class

The Typography Class provides methods that help to format text.


Unit Testing Class

This class provides functionalities to unit test your application and generate the result.


URI Class

The URI Class provides methods that help you retrieve information from your URI strings. If you use URI routing, you can also retrieve information about the rerouted segments.


User Agent Class

The User Agent Class provides functions that help identify information about the browser, mobile device, or robot visiting your site. In addition, you can get referrer information as well as language and supported character-set information.


XML-RPC and XML-RPC Server Classes

CodeIgniter’s XML-RPC classes permit you to send requests to another server, or set up your own XML-RPC server to receive requests.


Zip Encoding Class

This class is used to create zip archives of your data.

Creating Libraries

CodeIgniter has rich set of libraries, which you can find in system/libraries folder but CodeIgniter is not just limited to system libraries, you can create your own libraries too, which can be stored in application/libraries folder. You can create libraries in three ways.

  • Create new library
  • Extend the native library
  • Replace the native library

Create New Library

While creating new library one should keep in mind, the following things −

  • The name of the file must start with a capital letter e.g. Mylibrary.php
  • The class name must start with a capital letter e.g. class Mylibrary
  • The name of the class and name of the file must match.


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
   class Mylibrary {
      public function some_function() {
/* End of file Mylibrary.php */

Loading the Custom Library

The above library can be loaded by simply executing the following line in your controller.


mylibrary is the name of your library and you can write it in lowercase as well as uppercase letters. Use the name of the library without “.php” extension. After loading the library, you can also call the function of that class as shown below.


Extend the Native Library

Sometimes, you may need to add your own functionality to the library provided by CodeIgniter. CodeIgniter provides facility by which you can extend the native library and add your own functions. To achieve this, you must extend the class of native library class. For example if you want to extend the Email library then it can be done as shown below −

Class MY_Email extends CI_Email { 

Here, in the above example, MY_Email class is extending the native library’s email class CI_Email. This library can be loaded by the standard way of loading email library. Save the above code in file My_Email.php

Replace the Native Library

In some situations, you do not want to use the native library the way it works and want to replace it with your own way. This can be done by replacing the native library. To achieve this, you just need to give the same class name as it is named in native library. For example, if you want to replace the Email class, then use the code as shown below. Save your file name with Email.php and give a class name to CI_Email.


Class CI_Email {