You can do simply like that by using unset or setting null
.
unset($this->my_library);
OR
$this->my_library = null;
This answer is also worth reading for you to know detail about these two ways.
Edit
There is no built-in method to destroy loaded library object. But you can do it by extending Loader
class. And then load and unload library from that class. Here is my sample code ..
application/libraries/custom_loader.php
class Custom_loader extends CI_Loader {
public function __construct() {
parent::__construct();
}
public function unload_library($name) {
if (count($this->_ci_classes)) {
foreach ($this->_ci_classes as $key => $value) {
if ($key == $name) {
unset($this->_ci_classes[$key]);
}
}
}
if (count($this->_ci_loaded_files)) {
foreach ($this->_ci_loaded_files as $key => $value)
{
$segments = explode("/", $value);
if (strtolower($segments[sizeof($segments) - 1]) == $name.".php") {
unset($this->_ci_loaded_files[$key]);
}
}
}
$CI =& get_instance();
$name = ($name != "user_agent") ? $name : "agent";
unset($CI->$name);
}
}
In your controller ..
$this->load->library('custom_loader');
// To load library
$this->custom_loader->library('user_agent');
$this->custom_loader->library('email');
// To unload library
$this->custom_loader->unload_library('user_agent');
$this->custom_loader->unload_library('email');
Hope it will be useful.