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

 

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

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

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

Файлы вспомогательных функций обычно хранятся в каталоге system/helpers. Кроме того, вы можете создать каталог helpers в каталоге application вашего приложения. При загрузке CodeIgniter в первую очередь проверит каталог system/application/helpers. Если каталог не существует или соответствующий файл вспомогательных функций в нем не найден, CodeIgniter обратиться к каталогу system/helpers.

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

Для загрузки вспомогательных функций достаточно выполнить простой вызов:

  1. $this->load->helper('name');

Здесь name - название файла вспомогательных функций без расширения '.php' и префикса helper. К примеру, для загрузки файла вспомогательных функций URL (URL Helpers), который называется url_helper.php нужно сделать следующее:
  1. $this->load->helper('url');

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

Подключение нескольких файлов вспомогательных функций

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

  1. $this->load->helper( array('helper1', 'helper2', 'helper3') );

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

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

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

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

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

Здесь "Click Here" - текст ссылки, и "blog/comments" - URI контроллера и функции, на которые вы хотите ссылаться.

"Наследование" вспомогательных функций

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

Если вам нужно только добавить функциональность к существующим вспомогательным функциям - добавить одну-две функции или изменить функциональность конкретной функции, то не имеет смысла переопределять все функции в файле своими версиями. В этом случае проще "наследовать" вспомогательные функции. Термин "наследовать" в данном случае используется в переносном смысле - вспомогательные функции не являются объектно-ориентированными и не могут быть наследованны в прямом смысле слова. На практике такой подход дает вам возможность дополнять и переопределять функциональность системных вспомогательных функций.

К примеру, чтобы "наследовать" системные вспомогательные функции массивов вам понадобиться создать файл application/helpers/MY_array_helper.php, и добавить или переопределить функции:

  1. // any_in_array() is not in the Array Helper, so it defines a new function
  2. function any_in_array($needle, $haystack)
  3. {
  4. $needle = (is_array($needle)) ? $needle : array($needle);
  5.  
  6. foreach ($needle as $item)
  7. {
  8. if (in_array($item, $haystack))
  9. {
  10. return TRUE;
  11. }
  12. }
  13.  
  14. return FALSE;
  15. }
  16.  
  17. // random_element() is included in Array Helper, so it overrides the native function
  18. function random_element($array)
  19. {
  20. shuffle($array);
  21. return array_pop();
  22. }

Настройка вашего собственного префикса

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

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

Обратите внимание на то, что все системные библиотеки CodeIgniter используют префикс "CI_", поэтому НЕ ИСПОЛЬЗУЙТЕ этот префикс.

Отправить комментарий

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Allowed HTML tags: <a> <em> <b> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <p> <h2> <h3>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]". PHP source code can also be enclosed in <?php ... ?> or <% ... %>.

Подробнее о форматировании

CAPTCHA
Этот вопрос предназначен для того, чтобы отсеять ботов
9 + 3 =
Решите простой математический пример и введите результат. К примеру, для вопроса 1+3 нужно ввести 4

Вход в систему

Последние комментарии