Создание вспомогательных классов
В некоторых случаях вам может потребоваться разработать классы, которые существуют отдельно от ваших контроллеров, но имеют возможность использовать все ресурсы CodeIgniter. Это легко сделать, как вы увидите.
get_instance()
-
get_instance() -
Возвращает: Ссылка на экземпляр вашего контроллера Тип возвращаемого значения: CI_Controller
Любой класс, который вы создаете внутри методов контроллера, может получить доступ к собственным ресурсам 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() в каждом из них.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/ancillary_classes.html