Автозагрузка библиотек в Codeigniter

Я новичок в Codeigniter. У меня 3 библиотеки в автозагрузке в config.php .

Но в одном из моих контроллеров я не хочу загружать библиотеки. Это возможно?


person raavan    schedule 25.12.2012    source источник
comment
Это немного сложно сделать, потому что автозагрузка является глобальной функцией. Взгляните на этот пост http://stackoverflow.com/questions/8096630/not-to-load-an-autoload-library-in-codeigniter   -  person Sasha    schedule 25.12.2012
comment
@Саша Спасибо дружище!!.. :-)   -  person raavan    schedule 26.12.2012


Ответы (3)


Расширьте возможности CI_Controller в своих библиотеках.

Что-то вроде этого:

class MyLibrary extends CI_Controller {
    var $ci;

    function __construct() {

      $this->ci = &get_instance();
      $route = $this->ci->router->fetch_class();

      if( $route == strtolower('YourController') ) return false;
    }
}
person Slipstream    schedule 08.05.2013

Если вам нужна какая-либо библиотека во всем приложении, вы можете загрузить ее в файле конфигурации, и она будет загружена автоматически. Но если вам нужна библиотека только в конкретном контроллере, вы можете загрузить ее в тот контроллер, где она вам нужна.

Class test Extends CI_Controller{

    function index()
    {
        $this->load->library('mylibrary');
        $this->mylibrary->somemethod();    
    }

}

Или, если вам нужна библиотека через контроллер, вы можете загрузить ее в конструкторе.

Class test Extends CI_Controller{

    function __construct()
    {
       parent::__construct();
         $this->load->library('mylibrary');
    }

    function index(){
         $this->mylibrary->somemethod();    
    }
    function test(){
         $this->mylibrary->someothermethod();    
    }

}
person Muhammad Raheel    schedule 25.12.2012
comment
Загрузка моделей в конструкторе действительно работает? Никогда не пробовал так... Интересно. - person esp; 26.12.2012

вы можете удалить библиотеки из файла автозагрузки. тогда они не будут активны в фреймворке. Если вы хотите их использовать, вы можете вызывать их в конструкторах, если хотите, чтобы они были в классе. Если вы хотите использовать их только в методе, вы загружаете их в метод.

person kiriappa    schedule 25.12.2012