Вспомогательные функции
Вспомогательные функции, как следует из названия, помогают вам с задачами. Каждый файл вспомогательных функций представляет собой просто набор функций в определённой категории. Существуют вспомогательные функции URL, которые помогают в создании ссылок, есть вспомогательные функции для форм, которые помогают создавать элементы форм, вспомогательные функции для текста выполняют различные операции по форматированию текста, вспомогательные функции для файлов cookie устанавливают и считывают файлы cookie, вспомогательные функции для файлов помогают вам работать с файлами и т.д.
В отличие от большинства других систем в CodeIgniter, вспомогательные функции не написаны в объектно-ориентированном формате. Они простые, процедурные функции. Каждая вспомогательная функция выполняет одну определённую задачу без зависимости от других функций.
CodeIgniter по умолчанию не загружает файлы вспомогательных функций, поэтому первым шагом при использовании вспомогательной функции является её загрузка. После загрузки она становится доступной глобально в вашем контроллере и представлении.
Вспомогательные функции обычно хранятся в каталоге system/helpers или application/helpers. CodeIgniter сначала ищет в каталоге application/helpers. Если каталог не существует или указанная вспомогательная функция там не найдена, CI вместо этого ищет в глобальном каталоге system/helpers/.
Загрузка вспомогательной функции
Загрузка файла вспомогательных функций довольно проста с помощью следующего метода:
$this->load->helper('name');
Где name — имя файла вспомогательной функции без расширения .php и части «helper».
Например, чтобы загрузить файл вспомогательных функций URL, который называется url_helper.php, сделайте так:
$this->load->helper('url');
Вспомогательная функция может быть загружена в любом месте внутри методов вашего контроллера (или даже внутри файлов представления, хотя это не лучший подход), только если вы загрузите её до использования. Вы можете загрузить вспомогательные функции в конструктор своего контроллера, чтобы они были доступны автоматически в любой функции, или вы можете загрузить вспомогательную функцию в конкретной функции, которой она нужна.
Примечание
Метод загрузки вспомогательной функции выше не возвращает значение, поэтому не пытайтесь назначить его переменной. Используйте его так, как показано.
Загрузка нескольких вспомогательных функций
Если вам нужно загрузить более одной вспомогательной функции, вы можете указать их в массиве, как показано ниже:
$this->load->helper(
array('helper1', 'helper2', 'helper3')
);
Автозагрузка вспомогательных функций
Если вы обнаружите, что вам нужна определённая вспомогательная функция глобально во всём приложении, вы можете указать CodeIgniter на её автозагрузку во время инициализации системы. Это делается путём открытия файла application/config/autoload.php и добавления вспомогательной функции в массив autoload.
Использование вспомогательной функции
После загрузки файла вспомогательной функции, содержащего функцию, которую вы хотите использовать, вы вызовете её так, как вызываете стандартную функцию PHP.
Например, чтобы создать ссылку с использованием функции anchor() в одном из файлов представления, вы сделаете так:
<?php echo anchor('blog/comments', 'Click Here');?>
Где «Нажмите здесь» — имя ссылки, а «blog/comments» — URI контроллера/метода, к которому вы хотите создать ссылку.
Расширение вспомогательных функций
Чтобы «расширить» вспомогательные функции, создайте файл в папке application/helpers/ с идентичным именем существующей вспомогательной функции, но с префиксом MY_ (этот элемент настраивается. См. ниже).
Если всё, что вам нужно сделать, это добавить функциональность к существующей вспомогательной функции — возможно, добавить одну или две функции или изменить работу конкретной функции вспомогательной функции — то избыточно заменять всю вспомогательную функцию вашей версией. В этом случае лучше просто «расширить» вспомогательную функцию.
Примечание
Термин «расширение» используется условно, поскольку функции вспомогательных функций являются процедурными и дискретными, и их нельзя расширять в традиционном программистском смысле. Под капотом это даёт вам возможность добавлять или заменять функции, которые предоставляет вспомогательная функция.
Например, чтобы расширить встроенную вспомогательную функцию массивов, вы создадите файл application/helpers/MY_array_helper.php и добавите или переопределите функции:
// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
$needle = is_array($needle) ? $needle : array($needle);
foreach ($needle as $item)
{
if (in_array($item, $haystack))
{
return TRUE;
}
}
return FALSE;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
shuffle($array);
return array_pop($array);
}
Установка собственного префикса
Префикс имени файла для «расширения» вспомогательных функций такой же, как и для расширения библиотек и основных классов. Чтобы установить свой собственный префикс, откройте файл application/config/config.php и найдите этот элемент:
$config['subclass_prefix'] = 'MY_';
Обратите внимание, что все встроенные библиотеки CodeIgniter имеют префикс CI_, поэтому не используйте его в качестве своего префикса.
Что дальше?
В оглавлении вы найдёте список всех доступных файлов вспомогательных функций. Просмотрите каждый из них, чтобы узнать, что они делают.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/helpers.html