<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Loader Class : CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 1.6.3</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Loader Class
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">


<h1>Loader Class</h1>

<p>Loader, as the name suggests, is used to load elements.  These elements can be libraries (classes) <a href="../general/views.html">View files</a>,
<a href="../general/helpers.html">Helpers</a>, <a href="../general/plugins.html">Plugins</a>, or your own files.</p>

<p class="important"><strong>Note:</strong> This class is initialized automatically by the system so there is no need to do it manually.</p>

<p>The following functions are available in this class:</p>



<h2>$this->load->library('<var>class_name</var>')</h2>

<p>This function is used to load core classes.  Where <var>class_name</var> is the name of the class you want to load.
Note: We use the terms "class" and "library" interchangeably.</p>

<p>For example, if you would like to send email with CodeIgniter, the first step is to load the email class within your controller:</p>

<code>$this->load->library('email');</code>

<p>Once loaded, the library will be ready for use, using <kbd>$this->email-></kbd><samp><em>some_function</em>()</samp>.

<p>Library files can be stored in subdirectories within the main "libraries" folder, or within your personal <dfn>application/libraries</dfn> folder.  
To load a file located in a subdirectory, simply include the path, relative to the "libraries" folder.  
For example, if you have file located at:</p>

<code>libraries/flavors/chocolate.php</code>

<p>You will load it using:</p>

<code>$this->load->library('flavors/chocolate');</code>

<p>You may nest the file in as many subdirectories as you want.</p>

<h3>Setting options</h3>

<p>The second parameter allows you to optionally pass configuration setting.  You will typically pass these as an array:</p>

<code>
$config = array (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mailtype' => 'html',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'charset'&nbsp; => 'utf-8,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'priority' => '1'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<br />
$this->load->library('email', $config);</code>

<p>Config options can usually also be set via a config file. Each library is explained in detail in its own page, so please read the information regarding each one you would like to use.</p>

<h3>Assigning a Library to a different object name</h3>

<p>If the third parameter is blank, the library will usually be assigned to an object with the same name as the library.  For example, if the library is named <dfn>Session</dfn>, it
will be assigned to a variable named <dfn>$this->session</dfn>.</p>

<p>If you prefer to set your own class names you can pass its value to the third parameter:</p>

<code>$this->load->library('session', '', 'my_session');<br /><br />

// Session class is now accessed using:<br /><br />

$this->my_session

</code>



<h2>$this->load->view('<var>file_name</var>', <samp>$data</samp>, <kbd>true/false</kbd>)</h2>

<p>This function is used to load your View files.  If you haven't read the <a href="../general/views.html">Views</a> section of the
user guide it is recommended that you do since it shows you how this function is typically used.</p>

<p>The first parameter is required.  It is the name of the view file you would like to load. &nbsp;Note: The .php file extension does not need to be specified unless you use something other then <kbd>.php</kbd>.</p>

<p>The second <strong>optional</strong> parameter can take
an associative array or an object as input, which it runs through the PHP <a href="http://www.php.net/extract">extract</a> function to
convert to variables that can be used in your view files.  Again, read the <a href="../general/views.html">Views</a> page to learn
how this might be useful.</p>

<p>The third <strong>optional</strong> parameter lets you change the behavior of the function so that it returns data as a string
rather than sending it to your browser.  This can be useful if you want to process the data in some way.  If you
set the parameter to <kbd>true</kbd> (boolean) it will return data.  The default behavior is <kbd>false</kbd>, which sends it
to your browser.  Remember to assign it to a variable if you want the data returned:</p>

<code>$string = $this->load->view('<var>myfile</var>', '', <kbd>true</kbd>);</code>


<h2>$this-&gt;load-&gt;model('<var>Model_name</var>');</h2>
<p><code>$this-&gt;load-&gt;model('<var>Model_name</var>');</code></p>
<p>If your model is located in a sub-folder, include the relative path from your models folder. For example, if you have a model located at application/models/blog/queries.php you'll load it using:</p>
<p><code>$this-&gt;load-&gt;model('<var>blog/queries</var>');</code></p>
<p>If you would like your model assigned to a different object name you can specify it via the second parameter of the loading
	function:</p>
<code> $this-&gt;load-&gt;model('<var>Model_name</var>', '<kbd>fubar</kbd>');<br />
<br />
$this-&gt;<kbd>fubar</kbd>-&gt;function();</code>
<h2>$this->load->database('<var>options</var>', <kbd>true/false</kbd>)</h2>
<p>This function lets you load the database class.  The two parameters are <strong>optional</strong>.  Please see the
<a href="./database/index.html">database</a> section for more info.</p>


<h2>$this->load->scaffolding('<var>table_name</var>')</h2>

<p>This function lets you enable scaffolding.  Please see the
<a href="../general/scaffolding.html">scaffolding</a> section for more info.</p>



<h2>$this->load->vars(<samp>$array</samp>)</h2>

<p>This function takes an associative array as input and generates variables using the PHP <a href="http://www.php.net/extract">extract</a> function.
This function produces the same result as using the second parameter of the <dfn>$this->load->view()</dfn> function above.  The reason you might
want to use this function independently is if you would like to set some global variables in the constructor of your controller
and have them become available in any view file loaded from any function.  You can have multiple calls to this function.  The data get cached
and merged into one array for conversion to variables.
</p>


<h2>$this->load->helper('<var>file_name</var>')</h2>
<p>This function loads helper files, where <var>file_name</var> is the name of the file, without the <kbd>_helper.php</kbd> extension.</p>


<h2>$this->load->plugin('<var>file_name</var>')</h2>
<p>This function loads plugins files, where <var>file_name</var> is the name of the file, without the <kbd>_plugin.php</kbd> extension.</p>

<h2>$this->load->file('<var>filepath/filename</var>', <kbd>true/false</kbd>)</h2>
<p>This is a generic file loading function.  Supply the filepath and name in the first parameter and it will open and read the file.
By default the data is sent to your browser, just like a View file, but if you set the second parameter to <kbd>true</kbd> (boolean)
it will instead return the data as a string.</p>


<h2>$this->load->lang('<var>file_name</var>')</h2>
<p>This function is an alias of the <a href="language.html">language loading function</a>: $this->lang->load()</p>

<h2>$this->load->config('<var>file_name</var>')</h2>
<p>This function is an alias of the <a href="config.html">config file loading function</a>: $this->config->load()</p>




</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="input.html">Input Class</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="language.html">Language Class</a>
</p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006-2008 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>