Модель загрузки Codeigniter в библиотеке
Я использую codeigniter 2.1.3
Я пытаюсь загрузить модель из библиотеки. Первоначально мой код в конструкции в библиотеке выглядит следующим образом:
$this->CI=& get_instance(); $this->CI->load->database('default')
Затем в одном из моих библиотечных методов
когда я попробовал строку ниже, он не работает
$this->load->model('model_name')
но когда я попробовал это
$this->CI->load->model('model_name','',TRUE)
он работает, каждый может объяснить, к чему относится экземпляр CI, и 2 дополнительных параметра при загрузке модели? Спасибо заранее.
Ответы
Ответ 1
Библиотека не обязательно является частью того, как работает CodeIgniter.
Это может быть домашняя библиотека, чтобы решить задачу, которую вы хотите сделать в своем приложении CI.
Это означает, что если вы хотите использовать какие-либо помощники CI, модели или другие библиотеки, вам нужно сделать это через экземпляр CI. Это достигается тем, что:
public function __construct()
{
$this->CI =& get_instance();
}
Назначив экземпляр вашему члену библиотеки с именем CI, все связанные с CI помощники, модели и библиотеки могут быть загружены через $this->CI
. Пытаясь сделать это только с помощью $this
, вы ссылаетесь только на текущую библиотеку, а не на экземпляр CI.
Чтобы загрузить модель правильно, в вашей библиотеке $this->CI->load->model('model_name');
достаточно. Второй параметр позволяет получить доступ к вашей модели с помощью другого имени объекта. Третий параметр не нужен для загрузки моделей, но позволяет автоматически загружать драйвер базы данных.
Если вы хотите получить доступ к своей модели через один и тот же элемент:
$respone = $this->CI->model_name->method();
Ответ 2
Вы можете сказать, что функция загрузки модели автоматически подключается путем передачи TRUE (boolean) по третьему параметру, и будут использоваться настройки подключения, как определено в файле конфигурации базы данных:
$this->load->model('Model_name', '', TRUE);
Вы можете узнать об этом в конце страницы этой ниже ссылки.
http://ellislab.com/codeigniter/user-guide/general/models.html
Ответ 3
У меня есть очень простой код, который вы должны использовать, чтобы загрузить модель в библиотеку
<?php
class Custom_lib
{
private $_CI;
public function __construct()
{
$this->_CI = & get_instance();
$this->_CI->load->model('Dynamic_Model','dm');
}
function currentSession()
{
$session = $this->_CI->dm->fetchSingleData('id,session','session',array('is_active'=>1));
return $session;
}
}
Я надеюсь, что этот код поможет вам