Класс загрузчика 

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

Примечание

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

“Пакеты” приложения 

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

Пример ниже, для каталога пакета приложений с именем “Foo Bar”.

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

Независимо от цели, пакет приложения “Foo Bar”, имеет свои собственные конфигурационные файлы, хелперы, языковые файлы, библиотеки м модели. Чтобы использовать эти ресурсы в контроллерах, сначала необходимо сказать Загрузчику, какой ресурс вы собираетесь загрузить из пакета, добавив путь к пакету используя add_package_path() метод.

Пакет файлов вида 

По умолчанию, пакет файлов вида, устанавливается при вызове add_package_path(). Просмотр пути зацикливается, и однажды встретится уже загруженый элемент.

В данном случае, возможен конфликт имен в пакетах, и возможно, может произойти загрузка неправильного пакета. Чтобы застраховаться от этого, установить необязательный второй параметр FALSE когда вызываете add_package_path().

$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // Загружает
$this->load->view('welcome_message'); // Не будет загружено сообщение по умолчанию welcome_message т.к. второй параметр add_package_path - FALSE

// Сброс
$this->load->remove_package_path(APPPATH.'my_app');

// Опять без второго параметра:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // Загружает
$this->load->view('welcome_message'); // Загружает

Настройки класса 

class CI_Loader 
library($library[, $params = NULL[, $object_name = NULL]]) 
Параметры:
  • $library (смешанный) – Имя библиотеки как строка или как массив с несколькими библиотеками
  • $params (массив) – Необязательный массив параметров для передачи загруженной библиотеки в конструктор
  • $object_name (строка) – Необязательно имя объекта в которое переименовть библиотеку
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

Этот метод используется для загрузки основных классов.

Примечание

Мы используем термины “класс” и “библиотека” взаимозаменяемо.

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

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

После загрузки библиотеки она будет готова к использованию, используя $this->email.

Библиотека файлов может храниться в подкаталогах внутри главного каталога “библиотек”, или в вашем личном application/libraries каталоге. Чтобы загрузить файл, расположенный в подкаталоге, просто указажите путь, по отношению к каталогу “библиотек”. Например, если у вас есть файл, расположенный по адресу:

libraries/flavors/Chocolate.php

Вы можете загрузить его с помощью:

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

Вы можете вложить файл в столько подкаталогов, во сколько пожелаете.

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

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

Параметры настройки

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

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

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

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

Пожалуйста, обратите внимание, когда несколько библиотек передаются в массив первым параметром, каждая получит тот же параметр настроек.

Присвоение библиотеке другого имени

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

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

$this->load->library('calendar', NULL, 'my_calendar');

// Класса календаря теперь доступен через:
$this->my_calendar

Пожалуйста, обратите внимание, когда несколько библиотек передаются в массив первым параметром, этот параметр сбрасывается.

driver($library[, $params = NULL[, $object_name]]) 
Параметры:
  • $library (смешанный) – Library name as a string or an array with multiple libraries
  • $params (массив) – Optional array of parameters to pass to the loaded library’s constructor
  • $object_name (строка) – Optional object name to assign the library to
Возвращает:

CI_Loader экземпляр (цепочка методов)

озвращаемый тип:

CI_Loader

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

Например, если вы хотите использовать сессии с Сodeigniter, первым шагом является загрузка в контроллере драйвера сессии:

$this->load->driver('session');

После загрузки, библиотека готова к использованию, используя $this->session.

Файлы драйвера должны храниться в подкаталоге основного каталога “библиотеки” или в вашем личном application/libraries каталоге. Подкаталог должен совпадать с именем родительского класса. Прочтите Drivers описание для деталей.

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

$this->load->driver(array('session', 'cache'));

Параметры настройки

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

$config = array(
        'sess_driver' => 'cookie',
        'sess_encrypt_cookie'  => true,
        'encryption_key' => 'mysecretkey'
);

$this->load->driver('session', $config);

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

Присвоение драйверу другого имени

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

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

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

// Класс сессии теперь доступен через:
$this->my_session
view($view[, $vars = array()[, return = FALSE]]) 
Параметры:
  • $view (строка) – Имя вида
  • $vars (массив) – Ассоциативный массив переменных
  • $return (булево) – Нужно ли возвращать загруженый вид
Возвращает:

Просмотр содержимого строки, если $return установлено в TRUE, иначе CI_Loader экземпляр (цепочка методов)

Возвращаемый типы:

смешанный

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

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

Примечание

.php расширение файла не нужно указывать, если вы не используете нечто отличное от .php.

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

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

$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = '']) 
Параметры:
  • $vars (смешанный) – Массив переменных (или название одной переменной)
  • $val (смешанный) – Необязательное значение переменной
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

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

get_var($key) 
Параметры:
  • $key (строка) – Имя ключа переменной
Возвращает:

Значение, если ключ найден, NULL если нет

Возвращаемый тип:

смешанный

Этот метод проверяет ассоциативный массив переменных, доступных для ваших видов. Это полезно, если по какой-либо причине переменная находится в библиотеке или другой контроллер использует метод $this->load->vars().

get_vars() 
Возвращает:Массив всех переменных вида
Возвращаемый тип:массив

Этот метод получает все переменные, доступные для вашего вида.

clear_vars() 
Возвращает:CI_Loader экземпляр (цепочка методов)
Возвращаемый тип:CI_Loader

Очищает кэшированные переменные вида.

model($model[, $name = ''[, $db_conn = FALSE]]) 
Параметры:
  • $model (смешанный) – Имя модели или массива содержащего несколько моделей
  • $name (строка) – Необязательное имя объекта для назначения модели
  • $db_conn (строка) – Необязательноя конфигурация база данных для группы загрузки
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

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

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

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

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

$this->load->model('model_name', 'fubar');
$this->fubar->method();
database([$params = ''[, $return = FALSE[, $query_builder = NULL]]]) 
Параметры:
  • $params (смешанный) – имя группы базы данных или параметров конфигурации
  • $return (смешанный) – Нужно ли возвращать загруженный объект базы данных
  • $query_builder (смешанный) – Следует ли загрузить в Query Builder (построителе запросов)
Возвращает:

Loaded CI_DB цепочку или FALSE при неудаче если $return установлено TRUE, иначе CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

смешанный

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

dbforge([$db = NULL[, $return = FALSE]]) 
Параметры:
  • $db (объект) – Объект базы данных
  • $return (смешанный) – Нужно ли возвращать экземпляр базы данных
Возвращает:

Loaded CI_DB_forge цепочку если $return имеет значение TRUE, иначе CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

смешанный

Загружает класс Database Forge, пожалуйста, обратитесь к этому руководству для получения дополнительной информации.

dbutil([$db = NULL[, $return = FALSE]]) 
Параметры:
  • $db (объект) – Объект базы данных
  • $return (смешанный) – Нужно ли возвращать в базе данных экземпляр утилиты
Возвращает:

Loaded CI_DB_utility цепочку если $return установлено в TRUE, иначе CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

смешанный

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

helper($helpers) 
Параметры:
  • $helpers (смешанный) – Имя хелпера как строка или как массив, содержащий несколько хелперов
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

Этот метод загружает файлы хелперов, где file_name имя файла, без _helper.php расширения.

file($path[, $return = FALSE]) 
Параметры:
  • $path (строка) – Путь к файлу
  • $return (смешанный) – Нужно ли возвращать загруженный файл
Возвращает:

Содержимое файла если $return является TRUE, иначе CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

смешанный

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

language($files[, $lang = '']) 
Параметры:
  • $files (смешанный) – Имя языкового файла или массив из нескольких языковых файлов
  • $lang (строка) – Имя языка
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

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

config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]]) 
Параметры:
  • $file (строка) – Имя файла конфигурации
  • $use_sections (смешанный) – Будут ли значения конфигурации загружаться в отдельном разделе
  • $fail_gracefully (смешанный) – Следует ли просто возвращать FALSE в случае неудачи
Возвращает:

TRUE при успехе, FALSE при неудаче

Возвращаемый тип:

булево

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

is_loaded($class) 
Параметры:
  • $class (строка) – Имя класса
Возвращает:

Имя свойства синглтона, если найден и FALSE если нетt

Возвращаемый тип:

смешанный

Позволяет проверить, загружен ли уже класс или нет.

Примечание

Под словом “класс” здесь подразумевается библиотеки и драйвера.

Если запрошенный класс был загружен, то метод возвращает его имя, назначенное в CI супер-объекте и FALSE если нет:

$this->load->library('form_validation');
$this->load->is_loaded('Form_validation');      // возвращает 'form_validation'

$this->load->is_loaded('Nonexistent_library');  // возвращает FALSE

Важно

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

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

$this->load->is_loaded('Form_validation');      // возвращает 'fv'
add_package_path($path[, $view_cascade = TRUE]) 
Параметры:
  • $path (строка) – Путь к добавлению
  • $view_cascade (смешанный) – Использовать ли каскадные виды
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

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

$this->load->add_package_path(APPPATH.'third_party/foo_bar/')
        ->library('foo_bar');
remove_package_path([$path = '']) 
Параметры:
  • $path (строка) – Путь для удаления
Возвращает:

CI_Loader экземпляр (цепочка методов)

Возвращаемый тип:

CI_Loader

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

Или для удаления конкретного пути пакета, укажите путь ранее переданный в метод add_package_path() для пакета.:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE]) 
Параметры:
  • $include_base (смешанный) – Следует ли включать BASEPATH
Возвращает:

Массив путей пакетов

Возвращаемый тип:

массив

Возвращает все доступные в настоящее время пути пакета.