+ +
+

Helper Functions

+

Helpers, as the name suggests, help you with tasks. Each helper file is +simply a collection of functions in a particular category. There are URL +Helpers, that assist in creating links, there are Form Helpers that help +you create form elements, Text Helpers perform various text formatting +routines, Cookie Helpers set and read cookies, File Helpers help you +deal with files, etc.

+

Unlike most other systems in CodeIgniter, Helpers are not written in an +Object Oriented format. They are simple, procedural functions. Each +helper function performs one specific task, with no dependence on other +functions.

+

CodeIgniter does not load Helper Files by default, so the first step in +using a Helper is to load it. Once loaded, it becomes globally available +in your controller and +views.

+

Helpers are typically stored in your system/helpers, or +application/helpers directory. CodeIgniter will look first in your +application/helpers directory. If the directory does not exist or the +specified helper is not located there CI will instead look in your +global system/helpers/ directory.

+
+

Loading a Helper

+

Loading a helper file is quite simple using the following method:

+
$this->load->helper('name');
+
+
+

Where name is the file name of the helper, without the .php file +extension or the “helper” part.

+

For example, to load the URL Helper file, which is named +url_helper.php, you would do this:

+
$this->load->helper('url');
+
+
+

A helper can be loaded anywhere within your controller methods (or +even within your View files, although that’s not a good practice), as +long as you load it before you use it. You can load your helpers in your +controller constructor so that they become available automatically in +any function, or you can load a helper in a specific function that needs +it.

+
+

Note

+

The Helper loading method above does not return a value, so +don’t try to assign it to a variable. Just use it as shown.

+
+
+
+

Loading Multiple Helpers

+

If you need to load more than one helper you can specify them in an +array, like this:

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

Auto-loading Helpers

+

If you find that you need a particular helper globally throughout your +application, you can tell CodeIgniter to auto-load it during system +initialization. This is done by opening the application/config/autoload.php +file and adding the helper to the autoload array.

+
+
+

Using a Helper

+

Once you’ve loaded the Helper File containing the function you intend to +use, you’ll call it the way you would a standard PHP function.

+

For example, to create a link using the anchor() function in one of +your view files you would do this:

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

Where “Click Here” is the name of the link, and “blog/comments” is the +URI to the controller/method you wish to link to.

+
+
+

“Extending” Helpers

+

To “extend” Helpers, create a file in your application/helpers/ folder +with an identical name to the existing Helper, but prefixed with MY_ +(this item is configurable. See below.).

+

If all you need to do is add some functionality to an existing helper - +perhaps add a function or two, or change how a particular helper +function operates - then it’s overkill to replace the entire helper with +your version. In this case it’s better to simply “extend” the Helper.

+
+

Note

+

The term “extend” is used loosely since Helper functions are +procedural and discrete and cannot be extended in the traditional +programmatic sense. Under the hood, this gives you the ability to +add to or or to replace the functions a Helper provides.

+
+

For example, to extend the native Array Helper you’ll create a file +named application/helpers/MY_array_helper.php, and add or override +functions:

+
// 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);
+}
+
+
+
+

Setting Your Own Prefix

+

The filename prefix for “extending” Helpers is the same used to extend +libraries and core classes. To set your own prefix, open your +application/config/config.php file and look for this item:

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

Please note that all native CodeIgniter libraries are prefixed with CI_ +so DO NOT use that as your prefix.

+
+
+
+

Now What?

+

In the Table of Contents you’ll find a list of all the available Helper +Files. Browse each one to see what they do.

+
+
+ + +