Uživatelská příručka CodeIgniter Verze 1.7.2


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 na load it. Once loaded, it becomes globally available in your controller and views.

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

Loading a Helper

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

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

Where name is the file name of the helper, without the .php file extension nebo the "helper" part.

For example, na 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 functions (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, nebo you can load a helper in a specific function that needs it.

Note: The Helper loading function above does not return a value, so don't try na assign it to a variable. Just use it as shown.

Loading Multiple Helpers

If you need na 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 na auto-load it during system initialization. This is done by opening the application/config/autoload.php file and adding the helper na the autoload array.

Using a Helper

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

For example, na 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 na the controller/function you wish to link to.

"Extending" Helpers

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

If all you need na do is add some functionality to an existing helper - perhaps add a function nebo two, or change how a particular helper function operates - then it's overkill na replace the entire helper with your verze. In this case it's better to simply "extend" the Helper. 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 na add to the functions a Helper provides, or na modify how the native Helper functions operate.

For example, na extend the native Array Helper you'll create a file named application/helpers/MY_array_helper.php, and add nebo 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 na 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 na see what they do.