Загрузка помощника
Загрузка нескольких помощников
Автозагрузка помощников
Использование помощника
Расширение помощников
Установка вашего собственного префикса
Что теперь?
Функции помощников
Помощники, как понятно из названия, помогают вам решать задачи. Каждый файл помощника — это просто коллекция функций в определенной категории. Есть помощники URL, которые помогают создавать ссылки, есть помощники Form, которые помогают создавать элементы форм, помощники Text выполняют различные операции форматирования текста, помощники Cookie устанавливают и считывают куки, помощники File помогают вам работать с файлами и так далее.
В отличие от большинства других систем в CodeIgniter, помощники написаны не в ООП-формате. Они являются простыми процедурными функциями. Каждая функция-помощник выполняет одну специфическую задачу, вне зависимости от других функций.
CodeIgniter не загружает файлы помощников по умолчанию, поэтому первым шагом при использовании помощников является их загрузка. Загруженные помощники доступны в ваших контроллерах и отображениях.
Помощники обычно храняться в директориях system/helpers и application/helpers . CodeIgniter сначала ищет в директории application/helpers. Если эта директория не существует, или если указанный помощник в ней не обнаружен, CodeIgniter будет искать в глобальной директории 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 и добавьте имя нужного помощника в массив автозагрузки. Подробные инструкции вы найдете в этом файле.
Использование помощника
После загрузки файла помощника, содержащего функции, вы можете использовать их, просто как обычные функции PHP.
Например, чтобы создать ссылку используя функцию anchor() в одном из ваших отбражений, вы можете сделать так:
<?php echo anchor('blog/comments', 'Click Here');?>
Где "Click Here" это имя ссылки, и "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($array);
}
Установка вашего собственного префикса
Префикс для расширения помощников тот же, который используется при расширении библиотек и классов ядра. Чтобы установить собственный префикс, откройте ваш файл application/config/config.php и найдите этот элемент:
$config['subclass_prefix'] = 'MY_';
Пожалуйста помните что все родные библиотеки CodeIgniter префиксируются с CI_, поэтому НЕ используйте такой префикс.
Что теперь?
В оглавлении вы найдете список всех доступных файлов помощников. Исследуйте их, чтобы увидеть, что они умеют делать.