mirror of
https://github.com/codeigniter4/CodeIgniter4.git
synced 2025-02-20 11:44:28 +08:00
442 lines
19 KiB
HTML
442 lines
19 KiB
HTML
|
|
|
|
<!DOCTYPE html>
|
|
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
|
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<title>Helper Functions — CodeIgniter4 4.0.0-alpha.2 documentation</title>
|
|
|
|
|
|
|
|
|
|
<link rel="shortcut icon" href="../_static/ci-icon.ico"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="../_static/css/citheme.css" type="text/css" />
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="top" title="CodeIgniter4 4.0.0-alpha.2 documentation" href="../index.html"/>
|
|
<link rel="up" title="General Topics" href="index.html"/>
|
|
<link rel="next" title="Global Functions and Constants" href="common_functions.html"/>
|
|
<link rel="prev" title="CodeIgniter URLs" href="urls.html"/>
|
|
|
|
|
|
<script src="../_static/js/modernizr.min.js"></script>
|
|
|
|
</head>
|
|
|
|
<body class="wy-body-for-nav" role="document">
|
|
|
|
|
|
<div class="wy-grid-for-nav">
|
|
|
|
|
|
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
<div class="wy-side-scroll">
|
|
<div class="wy-side-nav-search">
|
|
|
|
|
|
|
|
<a href="../index.html" class="icon icon-home"> CodeIgniter4
|
|
|
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<div role="search">
|
|
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
|
<input type="text" name="q" placeholder="Search docs" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../intro/index.html">Welcome to CodeIgniter4</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">Tutorial</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">CodeIgniter4 Overview</a></li>
|
|
</ul>
|
|
<ul class="current">
|
|
<li class="toctree-l1 current"><a class="reference internal" href="index.html">General Topics</a><ul class="current">
|
|
<li class="toctree-l2"><a class="reference internal" href="configuration.html">Working With Configuration Files</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="urls.html">CodeIgniter URLs</a></li>
|
|
<li class="toctree-l2 current"><a class="current reference internal" href="#">Helper Functions</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="common_functions.html">Global Functions and Constants</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="logging.html">Logging Information</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="errors.html">Error Handling</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="caching.html">Web Page Caching</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="modules.html">Code Modules</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="managing_apps.html">Managing your Applications</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="environments.html">Handling Multiple Environments</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../incoming/index.html">Controllers and Routing</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../outgoing/index.html">Building Responses</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../database/index.html">Working With Databases</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../models/index.html">Modeling Data</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../dbmgmt/index.html">Managing Databases</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../libraries/index.html">Library Reference</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../helpers/index.html">Helpers</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../testing/index.html">Testing</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../cli/index.html">Command Line Usage</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../extending/index.html">Extending CodeIgniter</a></li>
|
|
</ul>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="../license.html">The MIT License (MIT)</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="../changelogs/index.html">Change Logs</a></li>
|
|
</ul>
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
|
|
|
|
|
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
|
|
|
|
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
<a href="../index.html">CodeIgniter4</a>
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
<div class="wy-nav-content">
|
|
<div class="rst-content">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div role="navigation" aria-label="breadcrumbs navigation">
|
|
|
|
<ul class="wy-breadcrumbs">
|
|
|
|
<li><a href="../index.html">Docs</a> »</li>
|
|
|
|
<li><a href="index.html">General Topics</a> »</li>
|
|
|
|
<li>Helper Functions</li>
|
|
|
|
|
|
<li class="wy-breadcrumbs-aside">
|
|
|
|
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
|
|
<hr/>
|
|
</div>
|
|
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
<div itemprop="articleBody">
|
|
|
|
<div class="section" id="helper-functions">
|
|
<h1>Helper Functions<a class="headerlink" href="#helper-functions" title="Permalink to this headline">¶</a></h1>
|
|
<p>Helpers, as the name suggests, help you with tasks. Each helper file is
|
|
simply a collection of functions in a particular category. There are <strong>URL
|
|
Helpers</strong>, that assist in creating links, there are <strong>Form Helpers</strong> that help
|
|
you create form elements, <strong>Text Helpers</strong> perform various text formatting
|
|
routines, <strong>Cookie Helpers</strong> set and read cookies, <strong>File Helpers</strong> help you
|
|
deal with files, etc.</p>
|
|
<div class="contents local topic" id="contents">
|
|
<ul class="simple">
|
|
<li><a class="reference internal" href="#loading-a-helper" id="id1">Loading a Helper</a><ul>
|
|
<li><a class="reference internal" href="#loading-from-non-standard-locations" id="id2">Loading from Non-standard Locations</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="reference internal" href="#using-a-helper" id="id3">Using a Helper</a></li>
|
|
<li><a class="reference internal" href="#extending-helpers" id="id4">“Extending” Helpers</a></li>
|
|
<li><a class="reference internal" href="#now-what" id="id5">Now What?</a></li>
|
|
</ul>
|
|
</div>
|
|
<p>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.</p>
|
|
<p>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 <a class="reference internal" href="../incoming/controllers.html"><span class="doc">controller</span></a> and
|
|
<a class="reference internal" href="../outgoing/views.html"><span class="doc">views</span></a>.</p>
|
|
<p>Helpers are typically stored in your <strong>system/Helpers</strong>, or
|
|
<strong>application/Helpers directory</strong>. CodeIgniter will look first in your
|
|
<strong>application/Helpers directory</strong>. If the directory does not exist or the
|
|
specified helper is not located there CI will instead look in your
|
|
global <em>system/Helpers/</em> directory.</p>
|
|
<div class="section" id="loading-a-helper">
|
|
<h2><a class="toc-backref" href="#id1">Loading a Helper</a><a class="headerlink" href="#loading-a-helper" title="Permalink to this headline">¶</a></h2>
|
|
<p>Loading a helper file is quite simple using the following method:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="nx">helper</span><span class="p">(</span><span class="s1">'name'</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>Where <strong>name</strong> is the file name of the helper, without the .php file
|
|
extension or the “helper” part.</p>
|
|
<p>For example, to load the <strong>Cookie Helper</strong> file, which is named
|
|
<strong>cookie_helper.php</strong>, you would do this:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="nx">helper</span><span class="p">(</span><span class="s1">'cookie'</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>If you need to load more than one helper at a time, you can pass
|
|
an array of file names in and all of them will be loaded:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="nx">helper</span><span class="p">([</span><span class="s1">'cookie'</span><span class="p">,</span> <span class="s1">'date'</span><span class="p">]);</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>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.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">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.</p>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">The URL helper is always loaded so you do not need to load it yourself.</p>
|
|
</div>
|
|
<div class="section" id="loading-from-non-standard-locations">
|
|
<h3><a class="toc-backref" href="#id2">Loading from Non-standard Locations</a><a class="headerlink" href="#loading-from-non-standard-locations" title="Permalink to this headline">¶</a></h3>
|
|
<p>Helpers can be loaded from directories outside of <strong>application/Helpers</strong> and
|
|
<strong>system/Helpers</strong>, as long as that path can be found through a namespace that
|
|
has been setup within the PSR-4 section of the <a class="reference internal" href="../concepts/autoloader.html"><span class="doc">Autoloader config file</span></a>.
|
|
You would prefix the name of the Helper with the namespace that it can be located
|
|
in. Within that namespaced directory, the loader expects it to live within a
|
|
sub-directory named <code class="docutils literal"><span class="pre">Helpers</span></code>. An example will help understand this.</p>
|
|
<p>For this example, assume that we have grouped together all of our Blog-related
|
|
code into its own namespace, <code class="docutils literal"><span class="pre">Example\Blog</span></code>. The files exist on our server at
|
|
<strong>/Modules/Blog/</strong>. So, we would put our Helper files for the blog module in
|
|
<strong>/Modules/Blog/Helpers/</strong>. A <strong>blog_helper</strong> file would be at
|
|
<strong>/Modules/Blog/Helpers/blog_helper.php</strong>. Within our controller we could
|
|
use the following command to load the helper for us:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="nx">helper</span><span class="p">(</span><span class="s1">'Modules\Blog\blog'</span><span class="p">);</span>
|
|
</pre></div>
|
|
</div>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">The functions within files loaded this way are not truly namespaced.
|
|
The namespace is simply used as a convenient way to locate the files.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="using-a-helper">
|
|
<h2><a class="toc-backref" href="#id3">Using a Helper</a><a class="headerlink" href="#using-a-helper" title="Permalink to this headline">¶</a></h2>
|
|
<p>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.</p>
|
|
<p>For example, to create a link using the <code class="docutils literal"><span class="pre">anchor()</span></code> function in one of
|
|
your view files you would do this:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="o"><?</span><span class="nx">php</span> <span class="k">echo</span> <span class="nx">anchor</span><span class="p">(</span><span class="s1">'blog/comments'</span><span class="p">,</span> <span class="s1">'Click Here'</span><span class="p">);</span><span class="cp">?></span>
|
|
</pre></div>
|
|
</div>
|
|
<p>Where “Click Here” is the name of the link, and “blog/comments” is the
|
|
URI to the controller/method you wish to link to.</p>
|
|
</div>
|
|
<div class="section" id="extending-helpers">
|
|
<h2><a class="toc-backref" href="#id4">“Extending” Helpers</a><a class="headerlink" href="#extending-helpers" title="Permalink to this headline">¶</a></h2>
|
|
<p>To “extend” Helpers, create a file in your <strong>application/Helpers/</strong> folder
|
|
with an identical name to the existing Helper.</p>
|
|
<p>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.</p>
|
|
<div class="admonition note">
|
|
<p class="first admonition-title">Note</p>
|
|
<p class="last">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.</p>
|
|
</div>
|
|
<p>For example, to extend the native <strong>Array Helper</strong> you’ll create a file
|
|
named <strong>application/Helpers/array_helper.php</strong>, and add or override
|
|
functions:</p>
|
|
<div class="highlight-ci"><div class="highlight"><pre><span></span><span class="c1">// any_in_array() is not in the Array Helper, so it defines a new function</span>
|
|
<span class="k">function</span> <span class="nf">any_in_array</span><span class="p">(</span><span class="nv">$needle</span><span class="p">,</span> <span class="nv">$haystack</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="nv">$needle</span> <span class="o">=</span> <span class="nb">is_array</span><span class="p">(</span><span class="nv">$needle</span><span class="p">)</span> <span class="o">?</span> <span class="nv">$needle</span> <span class="o">:</span> <span class="p">[</span><span class="nv">$needle</span><span class="p">];</span>
|
|
|
|
<span class="k">foreach</span> <span class="p">(</span><span class="nv">$needle</span> <span class="k">as</span> <span class="nv">$item</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="nb">in_array</span><span class="p">(</span><span class="nv">$item</span><span class="p">,</span> <span class="nv">$haystack</span><span class="p">))</span>
|
|
<span class="p">{</span>
|
|
<span class="k">return</span> <span class="k">TRUE</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="k">return</span> <span class="k">FALSE</span><span class="p">;</span>
|
|
<span class="p">}</span>
|
|
|
|
<span class="c1">// random_element() is included in Array Helper, so it overrides the native function</span>
|
|
<span class="k">function</span> <span class="nf">random_element</span><span class="p">(</span><span class="nv">$array</span><span class="p">)</span>
|
|
<span class="p">{</span>
|
|
<span class="nb">shuffle</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
|
|
<span class="k">return</span> <span class="nb">array_pop</span><span class="p">(</span><span class="nv">$array</span><span class="p">);</span>
|
|
<span class="p">}</span>
|
|
</pre></div>
|
|
</div>
|
|
<p>The <strong>helper()</strong> method will scan through all PSR-4 namespaces defined in <strong>application/Config/Autoload.php</strong>
|
|
and load in ALL matching helpers of the same name. This allows any module’s helpers
|
|
to be loaded, as well as any helpers you’ve created specifically for this application. The load order
|
|
is as follows:</p>
|
|
<ol class="arabic simple">
|
|
<li>application/Helpers - Files loaded here are always loaded first.</li>
|
|
<li>{namespace}/Helpers - All namespaces are looped through in the order they are defined.</li>
|
|
<li>system/Helpers - The base file is loaded last</li>
|
|
</ol>
|
|
</div>
|
|
<div class="section" id="now-what">
|
|
<h2><a class="toc-backref" href="#id5">Now What?</a><a class="headerlink" href="#now-what" title="Permalink to this headline">¶</a></h2>
|
|
<p>In the Table of Contents you’ll find a list of all the available Helper
|
|
Files. Browse each one to see what they do.</p>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</div>
|
|
<div class="articleComments">
|
|
|
|
</div>
|
|
</div>
|
|
<footer>
|
|
|
|
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
|
|
|
<a href="common_functions.html" class="btn btn-neutral float-right" title="Global Functions and Constants" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
|
|
|
|
|
|
<a href="urls.html" class="btn btn-neutral" title="CodeIgniter URLs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
|
|
|
</div>
|
|
|
|
|
|
<hr/>
|
|
|
|
<div role="contentinfo">
|
|
<p>
|
|
© Copyright 2014-2018 British Columbia Institute of Technology.
|
|
Last updated on Nov 28, 2018.
|
|
|
|
</p>
|
|
</div>
|
|
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
|
|
</footer>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
var DOCUMENTATION_OPTIONS = {
|
|
URL_ROOT:'../',
|
|
VERSION:'4.0.0-alpha.2',
|
|
COLLAPSE_INDEX:false,
|
|
FILE_SUFFIX:'.html',
|
|
HAS_SOURCE: false,
|
|
SOURCELINK_SUFFIX: ''
|
|
};
|
|
</script>
|
|
<script type="text/javascript" src="../_static/jquery.js"></script>
|
|
<script type="text/javascript" src="../_static/underscore.js"></script>
|
|
<script type="text/javascript" src="../_static/doctools.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript" src="../_static/js/theme.js"></script>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
jQuery(function () {
|
|
SphinxRtdTheme.StickyNav.enable();
|
|
});
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html> |