Это не столько нежелательный результат, сколько результат загрузки экземпляра CI, который содержит все его объекты. Если вам нужен доступ к объектам CI, тогда вы должны использовать его, если вы не ... ну, вы не делаете.
Вы можете сделать свой код немного более эффективным, не назначая экземпляр CI в конструкторе, а вместо этого в функциях, в которых вам нужен доступ к некоторому объекту CI.
class Test {
public function cinotneeded() {
echo 'hello world';
}
public function cineeded() {
$CI = &get_instance();
return $CI->db->get('blog')->result();
}
}
Но, честно говоря, я сомневаюсь, что вы получите большую выгоду от производительности, если будете делать это так, как конструктор. Как вы сказали, и как подсказывает ваш код, некоторые функции устанавливают свойства, а некоторые выполняют блоки кода. Таким образом, вы не увидите никакого повышения производительности, потому что они обычно используются таким образом (в том же случае): $this->set('foo', 'bar')->get('blog');
Где set будет устанавливать foo
в bar
, и эти свойства будут использоваться для получения результата из blog
. Таким образом, КИ всегда участвует здесь на каком-то уровне.
Вы могли бы увидеть некоторую (незначительную) величину прироста производительности, если бы у вас была функция, которая просто возвращала что-то, не связанное с CI.
, например
function controller() {
$this->load->library('somelibrary');
echo $this->somelibrary->get_rand();
}
// library function
function get_rand() {
return rand();
}