Как уничтожить экземпляр библиотеки Codeigniter

Я хотел бы знать, есть ли способ уничтожить экземпляр библиотеки Codeigniter.

Что я хочу сделать, это что-то вроде этого:

$this->load->library('my_library');
/**
Code goes here
**/
$this->my_library->destoy_instance();

Причина, по которой мне нужно это сделать, заключается в том, что мне нужно освободить оперативную память при выполнении больших сценариев.

Любая помощь будет высоко оценена.

1

Решение

Вы можете просто сделать это, используя снята с охраны или настройка null,

unset($this->my_library);

ИЛИ ЖЕ

$this->my_library = null;

это ответ Также стоит почитать, чтобы вы узнали подробно об этих двух способах.

редактировать

Нет встроенного метода уничтожения загруженного объекта библиотеки. Но вы можете сделать это, расширив Loader учебный класс. А затем загрузить и выгрузить библиотеку из этого класса. Вот мой пример кода ..

Приложение / библиотеки / 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);
}
}

В вашем контроллере ..

$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');

Надеюсь, это будет полезно.

3

Другие решения

Хорошо, я нашел решение для этого, если вам нужно заново создать один и тот же объект в том же контроллере. Хитрость заключается в том, чтобы передать третье свойство, которое является пользовательским именем, которое вы можете назначить объекту.

$this->load->library('my_library', $my_parameters, 'my_library_custom_name');

Если вы просто хотите сбросить объект, PHP позаботится об этом. Вы можете подтвердить использование деструктора в вашем классе.

public function __destruct() {

// do something to show you when the object has been destructed

}
2

По вопросам рекламы [email protected]