$ This-> load-> дб (); инициализировать в конструкторе класса? - PullRequest
1 голос
/ 12 июля 2011

Я помещаю этот код в конструктор для модельного класса, основанного на учебном пособии для CI, в котором говорится, что если вы поместите его туда, соединение с базой данных впоследствии может использоваться глобально в этом классе. По какой-то причине это не работает, и приложение падает в этой части кода. Моя конфигурация базы данных в порядке, так как, когда я помещаю ее в контроллер, я в состоянии получить информацию о БД в порядке.

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Вы делаете это до или после конструктора родительского класса?

public function __construct()
{
    // placing it here fails: $this has no `load` property yet.
    // $this->load->database(); <!-- NO WAY JOSÉ!
    parent::__construct();
    // placing it here should work as the parent class has added that property
    // during it's own constructor
    $this->load->database();
}

С другой стороны, вы могли бы быть еще более явным:

public function __construct()
{
    // Doesn't matter where this goes:
    // grab the controller directly
    $CI =& get_instance(); // & is not strictly necessary, but still...
    // force the loader to load the database.
    $CI->load->database();
    // directly assign it.
    $this->db = $CI->db;
    // continue on your merry way
    parent::__construct();
}

Я считаю, что явное решение решило ряд проблем в проекте PHP 4, но это технически излишне.

1 голос
/ 12 июля 2011

вам не нужно инициализировать это.лучше настроить его вapplication - config - autoload.php файл, как это

   $autoload['libraries'] = array('database');
0 голосов
/ 13 июля 2011

Строка кода для загрузки объекта базы данных:

$this->load->database();

Затем на объект базы данных ссылается имя db, например:

$this->db->method_name();

Как указано вВ предыдущем посте, если вы собираетесь использовать базу данных в нескольких моделях, библиотека должна быть автоматически загружена в конфигурационном файле autoload.php.

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