Spec-Zone.ru › CodeIgniter 4

Вспомогательные функции

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

  • Загрузка вспомогательной функции
    • Загрузка из нестандартных расположений
  • Использование вспомогательной функции
  • Расширение вспомогательных функций
  • Что дальше?

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

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

Вспомогательные функции обычно хранятся в вашем каталоге system/Helpers или app/Helpers. CodeIgniter сначала проверит каталог app/Helpers. Если каталог не существует или указанная вспомогательная функция там отсутствует, CI вместо этого проверит глобальный каталог system/Helpers/.

Загрузка вспомогательной функции

Загрузка файла вспомогательной функции довольно проста с помощью следующего метода:

helper('name');

Где name — имя файла вспомогательной функции без расширения .php и части «_helper».

Например, чтобы загрузить вспомогательную функцию для работы с куками, которая называется cookie_helper.php, вы сделаете следующее:

helper('cookie');

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

helper(['cookie', 'date']);

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

Примечание

Метод загрузки вспомогательной функции выше не возвращает значения, поэтому не пытайтесь присвоить его переменной. Просто используйте его как показано.

Примечание

Вспомогательная функция URL всегда загружается, поэтому вам не нужно загружать ее самостоятельно.

Загрузка из нестандартных расположений

Вспомогательные функции могут быть загружены из каталогов, расположенных за пределами app/Helpers и system/Helpers, при условии, что этот путь может быть найден через пространство имен, которое было настроено в разделе PSR-4 файла конфигурации Автозагрузчик. Вы должны префиксровать имя вспомогательной функции пространством имен, в котором она может находиться. В пределах этого пространства имен загрузчик ожидает, что оно будет находиться в подкаталоге, названном Helpers. Пример поможет понять это.

Для этого примера предположим, что мы объединили весь код, связанный с блогом, в собственное пространство имен Example\Blog. Файлы существуют на нашем сервере в каталоге /Modules/Blog/. Таким образом, мы поместим файлы вспомогательных функций для модуля блога в каталог /Modules/Blog/Helpers/. Файл blog_helper будет находиться в /Modules/Blog/Helpers/blog_helper.php. В нашем контроллере мы можем использовать следующую команду, чтобы загрузить вспомогательную функцию:

helper('Modules\Blog\blog');

Примечание

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

Использование вспомогательной функции

После загрузки файла вспомогательной функции, содержащего функцию, которую вы намерены использовать, вы вызываете ее так же, как и стандартную функцию PHP.

Например, чтобы создать ссылку с помощью функции anchor() в одном из файлов представления, вы сделаете следующее:

<?= anchor('blog/comments', 'Click Here') ?>

Где «Нажмите здесь» — имя ссылки, а «blog/comments» — URI контроллера/метода, к которому вы хотите создать ссылку.

“Расширение” вспомогательных функций

Чтобы «расширить» вспомогательные функции, создайте файл в папке app/Helpers/ с идентичным именем существующей вспомогательной функции.

Если все, что вам нужно сделать, это добавить некоторую функциональность к существующей вспомогательной функции — возможно, добавить одну или две функции или изменить способ работы определенной функции вспомогательной функции — то замена всей вспомогательной функции вашей версией избыточна. В этом случае лучше просто «расширить» вспомогательную функцию.

Примечание

Термин «расширить» используется условно, так как вспомогательные функции процедурны и дискретны и не могут быть расширены в традиционном программном смысле. Под капотом это дает возможность добавить или заменить функции, предоставляемые вспомогательной функцией.

Например, чтобы расширить встроенную вспомогательную функцию для работы с массивами, вы создадите файл app/Helpers/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 : [$needle];

    foreach ($needle as $item) {
        if (in_array($item, $haystack, true)) {
            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);
}

Метод helper() просматривает все пространства имен PSR-4, определённые в app/Config/Autoload.php, и загружает ВСЕ соответствующие вспомогательные функции с тем же именем. Это позволяет загружать вспомогательные функции любого модуля, а также любые вспомогательные функции, которые вы создали специально для этого приложения. Порядок загрузки следующий:

  1. app/Helpers — Файлы, загруженные здесь, всегда загружаются первыми.
  2. {namespace}/Helpers — Все пространства имен перебираются в порядке их определения.
  3. system/Helpers — Базовый файл загружается последним.

Что дальше?

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

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/general/helpers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API