CodeIgniter, руководство пользователя к версии 1.6.1


Хелперы

Хелперы, как говорит их название, помогают в решении ваших задач. Каждый файл с хелперами — это простая коллекция функций в той или иной категории. Есть URL Хелперы, которые помогают создавать ссылки, есть Хелперы форм, которые помогут создать элементы форм, Текстовые хелперы выполняющие различные функции по форматированию текста, Cookie Helpers устанавливающие и читающие cookie, Файловые хелперы помогающие управлять файлами и так далее.

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

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

Хелперы, как правило, хранятся в папке system/helpers. Так же вы можете создать папку с названием helpers внутри вашей папки application и хранить собственные хелперы там. CodeIgniter сначала будет искать хелпер в папке system/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') );

Авто-загрузка хелперов

Если вам необходим хелпер для всего приложения, вы можете сказать CI, чтобы он загружал его при инициализации приложения. Это можно сделать открыв файл application/config/autoload.php и добавив хелпер в массив автозагрузки.

Использование хелперов

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

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

<?=anchor('blog/comments', 'Нажми сюда');?>

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

«Расширение» хелперов

Чтобы «расширить» хелперы, создайте в вашей папке application/helpers/ файл с идентификационным именем хелпера, но добавив в начало префикс MY_ (можно изменить в конфигурации. Смотри ниже.).

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

Например, чтобы расширить стандартный Array Helper вы должны создать файл application/helpers/MY_array_helper.php и добавить туда перекрывающие функции:

// Функции any_in_array() нет в Array Helper, поэтому вы просто создадите новую функцию
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() есть в Array Helper, поэтому объявив ее вы перекроете стандартную функцию
function random_element($array)
{
    shuffle($array);
    return array_pop();
}

Установка собственного префикса

Имя префикса для расширения хелперов так же используется для расширения библиотек и классов ядра. Чтобы установить свой префикс, откройте ваш файл application/config/config.php и найдите там такую строчку:

$config['subclass_prefix'] = 'MY_';

Пожалуйста обратите внимание на то, что стандартный префикс для самого CodeIgniter — CI_. Вам нельзя использовать такой префикс.

Что теперь?

В содержании вы найдете весь список существующих хелперов с описанием всех функций. Можете пользоваться этим руководством ежедневно.