Создание вспомагательных классов
В некоторых случаях может потребоваться разработать классы, которые существуют отдельно от ваших контроллеров, но есть возможность использовать их вместе с ресурсами CodeIgniter. Вы увидите как просто это сделать.
get_instance()
Любой класс, которому припысывается значение внутри методов контроллера, может иметь доступ к родным ресурсам CodeIgniter просто используя get_instance() функцию. Эта функция возвращает соновной объект CodeIgniter.
Обычно, для вызова доступных методов CodeIgniter необходимо использовать $this конструкцию:
$this->load->helper('url');
$this->load->library('session');
$this->config->item('base_url');
// etc.
$this, обычно, работает только внутри ваших контроллеров, моделей или видов. Если хотите использовать классы CodeIgniter внутри своих классов сделайте следующее:
Сначала, присвоим переменной объект CodeIgniter:
$CI =& get_instance();
После присвоения объекта переменной, используйте эту переменную вместо $this:
$CI =& get_instance();
$CI->load->helper('url');
$CI->load->library('session');
$CI->config->item('base_url');
// etc.
Если Вы собираетесь использовать get_instance() внутри другого класса, лучше будет присвоить ее к свойству. В этом случае, Вам не придется вызывать get_instance() в каждом отдельном методе.
Пример:
class Example {
protected $CI;
// We'll use a constructor, as you can't directly call a function
// from a property definition.
public function __construct()
{
// Assign the CodeIgniter super-object
$this->CI =& get_instance();
}
public function foo()
{
$this->CI->load->helper('url');
redirect();
}
public function bar()
{
$this->CI->config->item('base_url');
}
}
В примере выше, оба метода foo() и bar() будут работать после инициализации Example класса, без необходимости вызывать get_instance() в каждом из них.