Функции помощников
Помощники, как понятно из названия, помогают вам решать задачи. Каждый файл помощника — это просто коллекция функций в определенной категории. Есть помощники 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_, поэтому НЕ используйте такой префикс.
Что теперь?
В оглавлении вы найдете список всех доступных файлов помощников. Исследуйте их, чтобы увидеть, что они умеют делать.