CodeIgniter User Guide Version 2.0.0


Класс Loader (загрузчик)

Загрузчик, как подразумевает его название, используется для того, чтобы загружать элементы. Этими элементами могут быть библиотеки (классы), отображения, помощники, модели или ваши собственные файлы.

Примечание: Этот класс инициируется автоматически в системе. Нет нужды загружать его вручную.

В этом классе доступны следующие функции:

$this->load->library('class_name', $config, 'object name')

Эта функция используется для загрузки базовых классов. class_name - это имя класса, который вы хотите загрузить. Примечание: мы используем термины "класс" и "библиотека", подразумевая их взаимозаменяемость.

Например, если вы хотите отправить электронную почту, используя CodeIgniter, первый шаг, который необходимо совершить — это загрузить библиотеку email в вашем контроллере:

$this->load->library('email');

Загруженный класс будет готов для использования через $this->email->some_function().

Файлы библиотек могут быть сохранены в поддиректориях в основной директории "libraries", или в вашей персональной директории application/libraries. Для того, чтобы загрузить файл, находящийся в поддиректории, достаточно указать относительный путь к директории "libraries". Например, если ваш файл находится:

libraries/flavors/chocolate.php

Вы можете загрузить его, используя:

$this->load->library('flavors/chocolate');

Вы можете хранить файл за несколькими поддиректориями, если захотите.

Установка опций

Второй (опциональный) параметр позволяет вам опционально передавать настройки конфигурации. Обычно вы можете передать их массивом:

$config = array (
                  'mailtype' => 'html',
                  'charset'  => 'utf-8,
                  'priority' => '1'
               );

$this->load->library('email', $config);

Опции конфигурации также обычно могут быть установлены через конфигурационный файл. Каждая библиотека объяснена в деталях на собственной странице, поэтому, пожалуйста, прочтите информацию о ней перед использованием.

Назначение библиотеке другого имени объекта

Если третий (опциональный) параметр пуст, библиотека обычно будет ассоциирована с объектом, имеющим то же имя, что и библиотека. Например, если библиотека называется Session, она будет доступна через переменную $this->session.

Если вы предпочитаете назначать собственные имена классов, просто передайте новое имя через третий параметр:

$this->load->library('session', '', 'my_session');

// Теперь класс Session доступен как:

$this->my_session

$this->load->view('file_name', $data, true/false)

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

Первый параметр обязательный. Это имя отображения, которое вы хотите загрузить. Примечение: Здесь расширение .php не указывается, так как на практике вы можете использовать любое другое расширение.

Второй опциональный параметр может передавать ассоциативный массив или объект, который будет извлечен посредством функции PHP extract и конвертирован в переменные, которые могут быть использованы в ваших отображениях. Опять же, прочтите об Отображениях чтобы понять, насколько это может быть полезным.

Третий опциональный параметр позволяет вам изменить поведение функции таким образом, что оно будет возвращать данные строкой, а не посылать их в браузер. Это может быть полезным при некоторых видах процессинга. Если вы устанавливаете параметр в TRUE, вы получите возвращенные данные. Поведение по умолчанию — FALSE, то есть данные будут отправлены в браузер.

$string = $this->load->view('myfile', '', true);

$this->load->model('Model_name');

$this->load->model('Model_name');

Если ваша модель находится в поддиректории, включите относительный путь от директории моделей. Например, если вы имеете модель, находящуюся в application/models/blog/queries.php, вы можете загрузить ее, используя:

$this->load->model('blog/queries');

Если вы хотите ассоциировать вашу модель с другим именем объекта, вы можете указать его, используя второй параметр функции:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

$this->load->database('options', true/false)

Эта функция позволяет загрузить класс базы данных. Два параметра опциональные. Пожалуйста, смотрите раздел База данных для дополнительной информации.

$this->load->vars($array)

Эта функция получает ассоциативный массив на вход и генерирует переменные, используя функцию PHP extract(). Эта функция дает тот же результат, как и при использовании второго параметра в функции $this->load->view(), описанной выше. Причина, по которой вы можете захотеть использовать эту функцию самостоятельно — если вы хотели бы установить некоторые глобальные переменные в конструкторе вашего контроллера так, чтобы они стали доступными из любой функции. Вы можете делать множество вызовов этой функции. Данные будут кешированы и слиты в единый массив для конвертации в переменные.

$this->load->helper('file_name')

Эта функция загружает файл помощника file_name. Имя файла указывается без суффикса _helper.php (и, соответственно, без расширения).

$this->load->file('filepath/filename', true/false)

Это общая функция загрузки файлов. Указываете имя файла первым параметром, и она откроет и прочтет файл. По умолчанию данные отправляются в браузер, как отображение. Если вы установите второй параметр в true, вы получите данные на выходе, строкой.

$this->load->language('file_name')

Эта функция является алиасом к функции загрузки языкового файла: $this->lang->load()

$this->load->config('file_name')

Эта функция является алиасом к функции загрузке конфигурации: $this->config->load()

"Пакеты" приложений

Пакеты приложений позволяют легко разместить пакет ресурсов в одной директории, с собственными библиотеками, моделями, помощниками, конфигурацией и языковыми файлами. Рекомендуется, чтобы эти пакеты размещались в директории application/third_party. Ниже пример структуры такой директории

Образец директории пакета "Foo Bar"

Ниже приведен пример директории приложения, называющегося "Foo Bar".

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

Независимо от цели приложения "Foo Bar", оно имеет собственные конфигурационные файлы, помощники, языковые файлы, библиотеки и модели. Для использования этих ресурсов в вашем контроллере, сперва вам необходимо указать загрузчику, что вы собираетесь загрузить ресурсы пакета — указанием пути к пакету.

$this->load->add_package_path()

Добавление пакета указывает загрузчику необходимость предварять данный путь для последующих запросов к ресурсам. Например, в приложении "Foo Bar" мы имеем библиотеку с названием Foo_bar.php. В нашем контроллере делаем следующее:

$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
$this->load->library('foo_bar');

$this->load->remove_package_path()

Когда ваш контроллер завершает использование ресурсов из пакета, особенно, если у вас есть другие пакеты, с которыми вы желаете работать, вы можете удалить путь пакета из загрузчика. Для того, чтобы удалить последний добавленный путь, просто вызываете этот метод без параметров:

$this->load->remove_package_path()

Или, чтобы удалить определенный путь к пакету, укажите путь функции add_package_path().:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');

Пакетирование файлов отображений

@todo — интерфейс не завершен. Возможно экспериментальное использование.

// ... save the original view path, and set to our Foo Bar package view folder
$orig_view_path = $this->load->_ci_view_path;
$this->load->_ci_view_path = APPPATH.'third_party/foo_bar/views/';

// ... code using the package's view files

// ... then return the view path to the application's original view path
$this->load->_ci_view_path = $orig_view_path;