Класс Loader
Класс Loader, как следует из названия, используется для загрузки элементов. Эти элементы могут быть библиотеками (классами), файлами представлений, драйверами, помощниками, моделями или вашими собственными файлами.
Примечание
Этот класс инициализируется системой автоматически, поэтому нет необходимости делать это вручную.
Пакеты приложения
Пакет приложения позволяет легко распространять полные наборы ресурсов в одном каталоге, включая собственные библиотеки, модели, помощники, конфигурационные файлы и файлы языка. Рекомендуется размещать эти пакеты в каталоге application/third_party. Ниже представлена примерная структура каталога пакета.
Ниже приведен пример каталога для пакета приложения с именем «Foo Bar».
/application/third_party/foo_bar config/ helpers/ language/ libraries/ models/
Каким бы ни было назначение пакета приложения «Foo Bar», у него есть собственные конфигурационные файлы, помощники, файлы языка, библиотеки и модели. Чтобы использовать эти ресурсы в своих контроллерах, сначала необходимо сообщить загрузчику, что вы собираетесь загружать ресурсы из пакета, добавив путь к пакету с помощью метода add_package_path().
Файлы представлений пакета
По умолчанию пути к файлам представлений пакета задаются при вызове add_package_path(). Пути к представлениям циклически проверяются, и как только совпадение найдено, представление загружается.
В этом случае возможны коллизии имён представлений внутри пакетов и, возможно, загрузка некорректного пакета. Чтобы избежать этого, при вызове add_package_path() задайте необязательный второй параметр в значение FALSE.
$this->load->add_package_path(APPPATH.'my_app', FALSE);
$this->load->view('my_app_index'); // Loads
$this->load->view('welcome_message'); // Will not load the default welcome_message b/c the second param to add_package_path is FALSE
// Reset things
$this->load->remove_package_path(APPPATH.'my_app');
// Again without the second parameter:
$this->load->add_package_path(APPPATH.'my_app');
$this->load->view('my_app_index'); // Loads
$this->load->view('welcome_message'); // Loads
Справочник по классам
-
class CI_Loader -
-
library($library[, $params = NULL[, $object_name = NULL]]) -
Параметры: - $library (mixed) – Имя библиотеки в виде строки или массива с несколькими библиотеками
- $params (array) – Необязательный массив параметров для передачи конструктору загруженной библиотеки
- $object_name (string) – Необязательное имя объекта, которому будет назначена библиотека
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Этот метод используется для загрузки основных классов.
Примечание
Мы используем термины «класс» и «библиотека» взаимозаменяемо.
Например, если вы хотите отправлять электронные письма с помощью CodeIgniter, первым шагом является загрузка класса email в вашем контроллере:
$this->load->library('email');После загрузки библиотека будет готова к использованию, используя
$this->email.Файлы библиотек могут храниться в подкаталогах в основной директории «libraries», или в вашей личной директории application/libraries. Чтобы загрузить файл, расположенный в подкаталоге, просто укажите путь, относительный к директории «libraries». Например, если у вас есть файл, расположенный по адресу:
libraries/flavors/Chocolate.php
Вы загрузите его, используя:
$this->load->library('flavors/chocolate');Вы можете вложить файл в любое количество подкаталогов.
Кроме того, несколько библиотек можно загрузить одновременно, передав массив библиотек в метод load.
$this->load->library(array('email', 'table'));Настройка параметров
Второй (необязательный) параметр позволяет вам необязательно передавать настройки конфигурации. Обычно вы передаете их в виде массива:
$config = array ( 'mailtype' => 'html', 'charset' => 'utf-8', 'priority' => '1' ); $this->load->library('email', $config);Параметры конфигурации обычно также можно задать через файл конфигурации. Каждая библиотека подробно описана на своей странице, поэтому, пожалуйста, ознакомьтесь с информацией по каждой библиотеке, которую вы хотите использовать.
Обратите внимание, что когда несколько библиотек передаются в массиве в качестве первого параметра, каждая из них получит ту же информацию о параметрах.
Назначение библиотеки другому имени объекта
Если третий (необязательный) параметр пуст, библиотека обычно будет назначена объекту с тем же именем, что и библиотека. Например, если библиотека называется Calendar, она будет назначена переменной с именем
$this->calendar.Если вы предпочитаете задавать свои собственные имена классов, вы можете передать их значение в третий параметр:
$this->load->library('calendar', NULL, 'my_calendar'); // Calendar class is now accessed using: $this->my_calendarОбратите внимание, что когда несколько библиотек передаются в массиве в качестве первого параметра, этот параметр отбрасывается.
-
driver($library[, $params = NULL[, $object_name]]) -
Параметры: - $library (mixed) – Имя библиотеки в виде строки или массива с несколькими библиотеками
- $params (array) – Необязательный массив параметров для передачи конструктору загруженной библиотеки
- $object_name (string) – Необязательное имя объекта, которому будет назначена библиотека
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Этот метод используется для загрузки драйверных библиотек, работает очень похоже на метод
library().Например, если вы хотите использовать сессии с CodeIgniter, первым шагом является загрузка драйвера сессий в вашем контроллере:
$this->load->driver('session');После загрузки библиотека будет готова к использованию, используя
$this->session.Файлы драйверов должны храниться в подкаталоге в основной директории «libraries», или в вашей личной директории application/libraries. Подкаталог должен соответствовать имени родительского класса. Подробнее об этом см. описание Драйверов.
Кроме того, несколько драйверных библиотек можно загрузить одновременно, передав массив драйверов в метод load.
$this->load->driver(array('session', 'cache'));Настройка параметров
Второй (необязательный) параметр позволяет вам необязательно передавать настройки конфигурации. Обычно вы передаете их в виде массива:
$config = array( 'sess_driver' => 'cookie', 'sess_encrypt_cookie' => true, 'encryption_key' => 'mysecretkey' ); $this->load->driver('session', $config);Параметры конфигурации обычно также можно задать через файл конфигурации. Каждая библиотека подробно описана на своей странице, поэтому, пожалуйста, ознакомьтесь с информацией по каждой библиотеке, которую вы хотите использовать.
Назначение драйвера другому имени объекта
Если третий (необязательный) параметр пуст, библиотека будет назначена объекту с тем же именем, что и родительский класс. Например, если библиотека называется Session, она будет назначена переменной с именем
$this->session.Если вы предпочитаете задавать свои собственные имена классов, вы можете передать их значение в третий параметр:
$this->load->library('session', '', 'my_session'); // Session class is now accessed using: $this->my_session
-
view($view[, $vars = array()[, return = FALSE]]) -
Параметры: - $view (string) – Имя представления
- $vars (array) – Ассоциативный массив переменных
- $return (bool) – Возвращать ли загруженное представление
Возвращает: Строка содержимого представления, если $return установлено в TRUE, в противном случае экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: mixed
Этот метод используется для загрузки ваших файлов представлений. Если вы еще не читали раздел Представлений руководства пользователя, рекомендуется сделать это, так как он показывает, как обычно используется этот метод.
Первый параметр обязателен. Это имя файла представления, которое вы хотите загрузить.
Примечание
Расширение файла .php не нужно указывать, если вы не используете что-то другое, кроме .php.
Второй необязательный параметр может принимать ассоциативный массив или объект в качестве входных данных, который он обрабатывает с помощью функции PHP extract() для преобразования в переменные, которые могут быть использованы в ваших файлах представлений. Опять же, прочитайте страницу Представлений, чтобы узнать, как это может быть полезно.
Третий необязательный параметр позволяет изменить поведение метода таким образом, что он возвращает данные в виде строки, а не отправляет их в браузер. Это может быть полезно, если вы хотите обработать данные каким-то образом. Если вы установите параметр в TRUE (булево значение), он вернет данные. По умолчанию поведение равно FALSE, что отправляет их в браузер. Помните, что вы должны присвоить его переменной, если вы хотите получить данные:
$string = $this->load->view('myfile', '', TRUE);
-
vars($vars[, $val = '']) -
Параметры: - $vars (mixed) – Массив переменных или имя одной переменной
- $val (mixed) – Необязательное значение переменной
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Этот метод принимает ассоциативный массив в качестве входных данных и создает переменные, используя функцию PHP extract(). Этот метод дает тот же результат, что и второй параметр метода
$this->load->view()выше. Причина, по которой вы можете захотеть использовать этот метод независимо, заключается в том, что вы хотите установить некоторые глобальные переменные в конструкторе вашего контроллера и сделать их доступными в любом файле представления, загруженном из любого метода. Вы можете иметь несколько вызовов этого метода. Данные кэшируются и объединяются в один массив для преобразования в переменные.
-
get_var($key) -
Параметры: - $key (string) – Ключ имени переменной
Возвращает: Значение, если ключ найден, NULL, если нет
Тип возвращаемого значения: mixed
Этот метод проверяет ассоциативный массив переменных, доступных для ваших представлений. Это полезно, если по какой-либо причине переменная установлена в библиотеке или другом методе контроллера, используя
$this->load->vars().
-
get_vars() -
Возвращает: Массив всех назначенных переменных представления Тип возвращаемого значения: array Этот метод извлекает все переменные, доступные для ваших представлений.
-
clear_vars() -
Возвращает: Экземпляр CI_Loader (цепочка методов) Тип возвращаемого значения: CI_Loader Очищает кэшированные переменные представления.
-
-
model($model[, $name = ''[, $db_conn = FALSE]]) -
Параметры: - $model (mixed) – Имя модели или массив, содержащий несколько моделей
- $name (string) – Необязательное имя объекта для присваивания модели
- $db_conn (string) – Необязательная группа конфигурации базы данных для загрузки
Возвращает: Экземпляр 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 (mixed) – Имя группы баз данных или параметры конфигурации
- $return (bool) – Возвращать ли загруженный объект базы данных
- $query_builder (bool) – Загружать ли Query Builder
Возвращает: Загруженный экземпляр CI_DB или FALSE в случае ошибки, если $return установлен в TRUE, иначе экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: mixed
Этот метод позволяет загрузить класс базы данных. Два параметра являются необязательными. Пожалуйста, см. раздел database для получения дополнительной информации.
-
dbforge([$db = NULL[, $return = FALSE]]) -
Параметры: - $db (object) – Объект базы данных
- $return (bool) – Возвращать ли экземпляр Database Forge
Возвращает: Загруженный экземпляр CI_DB_forge, если $return установлен в TRUE, иначе экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: mixed
Загружает класс Database Forge, пожалуйста, обратитесь к этому руководству для получения дополнительной информации.
-
dbutil([$db = NULL[, $return = FALSE]]) -
Параметры: - $db (object) – Объект базы данных
- $return (bool) – Возвращать ли экземпляр Database Utilities
Возвращает: Загруженный экземпляр CI_DB_utility, если $return установлен в TRUE, иначе экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: mixed
Загружает класс Database Utilities, пожалуйста, обратитесь к этому руководству для получения дополнительной информации.
-
helper($helpers) -
Параметры: - $helpers (mixed) – Имя хелпера как строка или массив, содержащий несколько хелперов
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Этот метод загружает вспомогательные файлы, где file_name — это имя файла без расширения _helper.php.
-
file($path[, $return = FALSE]) -
Параметры: - $path (string) – Путь к файлу
- $return (bool) – Возвращать ли загруженный файл
Возвращает: Содержимое файла, если $return установлен в TRUE, иначе экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: mixed
Это универсальный метод загрузки файлов. Укажите путь и имя файла в первом параметре, и он откроет и прочитает файл. По умолчанию данные отправляются в ваш браузер, как и файл представления, но если вы установите второй параметр в булево значение TRUE, он вместо этого вернет данные в виде строки.
-
language($files[, $lang = '']) -
Параметры: - $files (mixed) – Имя языкового файла или массив из нескольких языковых файлов
- $lang (string) – Имя языка
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Этот метод является псевдонимом метода загрузки языка language loading method:
$this->lang->load().
-
config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]]) -
Параметры: - $file (string) – Имя файла конфигурации
- $use_sections (bool) – Должны ли значения конфигурации загружаться в свой собственный раздел
- $fail_gracefully (bool) – Просто возвращать FALSE в случае ошибки
Возвращает: TRUE в случае успеха, FALSE в случае ошибки
Тип возвращаемого значения: bool
Этот метод является псевдонимом метода загрузки файла конфигурации config file loading method:
$this->config->load()
-
is_loaded($class) -
Параметры: - $class (string) – Имя класса
Возвращает: Имя свойства Singleton, если найдено, FALSE, если нет
Тип возвращаемого значения: mixed
Позволяет проверить, был ли уже загружен класс или нет.
Примечание
Слово «class» здесь относится к библиотекам и драйверам.
Если запрашиваемый класс был загружен, метод возвращает его присвоенное имя в CI Super-объекте и FALSE, если его нет:
$this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'form_validation' $this->load->is_loaded('Nonexistent_library'); // returns FALSEВажно
Если у вас есть более одного экземпляра класса (присвоенного разным свойствам), то будет возвращен первый.
$this->load->library('form_validation', $config, 'fv'); $this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'fv'
-
add_package_path($path[, $view_cascade = TRUE]) -
Параметры: - $path (string) – Путь для добавления
- $view_cascade (bool) – Использовать каскадные представления
Возвращает: Экземпляр CI_Loader (цепочка методов)
Тип возвращаемого значения: CI_Loader
Добавление пути к пакету инструктирует класс Loader добавлять в начало заданный путь для последующих запросов ресурсов. Например, пакет приложения «Foo Bar» выше имеет библиотеку с именем Foo_bar.php. В нашем контроллере мы бы сделали следующее:
$this->load->add_package_path(APPPATH.'third_party/foo_bar/') ->library('foo_bar');
-
remove_package_path([$path = '']) -
Параметры: - $path (string) – Путь для удаления
Возвращает: Экземпляр 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 (bool) – Включать ли BASEPATH
Возвращает: Массив путей к пакетам
Тип возвращаемого значения: массив
Возвращает все доступные пути к пакетам.
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/loader.html