Хелперы

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

В отличие от большинства других систем в 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 файла и добавления хелпера в массив автозагрузки.

Используем хелпер

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

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

< ?php echo anchor('blog/comments', 'Click Here');?>

Где “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_ поэтому НЕ СТОИ использовать его в качестве префикса.

Теперь Что?

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