Libraries in Codeignitor

Any kind of framework is a collection of reusable code which is divided into classes, so if we talk about OOPS or MVC, we do all our task in classes like for email sending, form validation or pagination kind of work. Collection of these classes are called a library in Codeignitor. There are so many libraries in Codeignitor which can find in it’s documentation Codeignitor Libraries and that can be used depends on requirement. So if we need to send an email we don’t need to create the whole function from scratch, we can use its email library for the implementation and same for the other task. Now let’s see how to use a library in CI.

Load the library to use it. Create a controller users.php and then use below code to send an email.

Controller: users.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
  
defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends CI_Controller {
    public function index() {
  
        // Load email library
        $this->load->library('email');
  
        // Use the inbuilt methods to send an email
        $this->email->from('abc@gmail.com', 'your name');
        $this->email->to('xyz@gmail.com');
        $this->email->subject('Test');
        $this->email->message('Welcome to GeeksforGeeks');
        $this->email->send();
    }    
}
?>

chevron_right


If we need to load multiple libraries, we can create an array and then define all the libraries name in that array.

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

Custom Libraries: We saw that CI has already a lot of inbuilt libraries. If we need some functionality which is not available in the CI library then we can create our own custom library. Let’s see how to create a custom library in CI.
Inbuilt libraries are available in the system folder but custom libraries need to be created in application/libraries folder. We need to keep in mind that file name should be same of the class name, also the first letter of a file name and class name should be in uppercase. Create a file Test.php in application/library folder. Below is the example of creating functionality in our custom library.

Custom Library: Test.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
class Test {
   public function abc() {
      echo "Welcome to GeeksforGeeks";
   }
}
?>

chevron_right


Custom libraries can be used just like inbuilt libraries in the controller. So in our users.php controller use the code below to check this.

Controller: users.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends CI_Controller {
    public function index() {  
  
        // Load the custom library
        $this->load->library('test');
    
        // Use the function of custom library
        $this->test->abc();
    }    
}
?>

chevron_right


Output:

Welcome to GeeksforGeeks

Extending Libraries: In this section we will see how to extend the inbuilt libraries of CI. It is also created in the same folder application/libraries just like we were doing for custom libraries. Now we need to keep in mind that we need to add MY_ prefix when we give the name for our library file, also use extends keyword to inherit all the properties of Email library. So, create a file MY_Email.php in application/libraries folder and use the code below.

Extended Library: MY_Email.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
class MY_Email extends CI_Email {
  
    // Add a function in Email library
    public function test() {
        echo "This is test function for extended Email library";
    }
}
?>

chevron_right


Once the Email library is extended, we can use it’s additional function ‘test’ in our controller. So in controller users.php use the code below to call ‘test’ function from Email library.

Controller: users.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends CI_Controller {
    public function index() {  
  
        // Load the library
        $this->load->library('email');
          
        // Call the function 
        $this->email->test();
   }    
}
?>

chevron_right


Output:

This is test function for extended Email library

Till now, extending our libraries and adding our own functionality, now if we want to completely override inbuilt libraries function and don’t want to use any function from the inbuilt library then we can also do that. All we just need to do is to create a file in application/library with file name Email.php (or whatever library needs to override) and then write your own function. Here we don’t need to use extends keyword. Below is the code…

Overridden library Name: Email.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
class CI_Email {
   public function test() {
      echo "This is test function for overridden Email library";
   }
 }
?>

chevron_right


Loading this library and calling the function will be the same as earlier we were doing in controller users.php.
Output:

This is test function for overridden Email library

get_instance(): Codeignitor make a super object and then sub-objects are created. We use $this keyword to access the object. We can not use $this keyword apart from controllers, models and view. So if we need to load another inbuilt helper or library in our custom library, $this won’t work because these custom libraries are out of the scope of superobject. To solve this issue we need to use get_instance() method in our custom library. Firstly we need to get the instance of superobject in a variable. Below is the line for our custom library to get the original codeignitor object reference.

$CI =& get_instance();

We need to notice that we are getting the reference or address of original codeignitor object using ‘&’ instead of creating a copy. After that, we can load any helper or library or model. Below is the complete code for custom library Test.php

Custom Library: Test.php

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
class Test {
   public function abc() {
  
       // Assign the CodeIgniter object to a variable
       $CI =& get_instance();
       $CI->load->helper('array');
   }
}
?>

chevron_right




My Personal Notes arrow_drop_up

Web Developer, Technical Content Writer

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.