<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter 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">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400}); 
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter 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>Code Igniter User Guide Version 1.5.0b1</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Linear Table of Contents</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://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Creating Libraries
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.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>Creating Libraries</h1>

<p>When we use the term "Libraries" we are normally referring to the classes that are located in the <kbd>libraries</kbd>
directory and described in the Class Reference of this user guide.  In this case, however, we will instead describe how you can create 
your own libraries within your <dfn>application/libraries</dfn> directory in order to maintain separation between your local resources 
and the global framework resources.</p>

<p>As an added bonus, Code Igniter permits your libraries to <kbd>extend</kbd> native classes if you simply need to add some functionality 
to an existing library. Or you can even replace native libraries just by placing identically named versions in your <dfn>application/libraries</dfn> folder.

<p>In summary:</p>

<ul>
<li>You can create entirely new libraries.</li>
<li>You can extend native libraries.</li>
<li>You can replace native libraries.</li>
</ul>

<p>The page below explains these three concepts in detail.</p>

<p class="important"><strong>Note:</strong> The Database classes can not be extended or replaced with your own classes,
nor can the main Controller class.  All other classes are able to be replaced/extended.</p>


<h2>Storage</h2>

<p>Your library classes should be placed within your <dfn>application/libraries</dfn> folder, as this is where Code Igniter will look for them when 
they are initialized.</p>


<h2>Naming Conventions</h2>

<ul>
<li>File names must be capitalized. For example:&nbsp; <dfn>Myclass.php</dfn></li>
<li>Class declarations must be capitalized. For example:&nbsp;  <kbd>class Myclass</kbd></li>
<li>Class names and file names must match.</li>
</ul>


<h2>The Class File</h2>

<p>Classes should have this basic prototype (Note:  We are using the name <kbd>Someclass</kbd> purely as an example):</p>

<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
<br /><br />
class Someclass {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;function some_function()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br /><br />
?&gt;</code>


<h2>Using Your Class</h2>

<p>From within any of your <a href="controllers.html">Controller</a> functions you can initialize your class using the standard:</p>

<code>$this->load->library('<kbd>someclass</kbd>');</code>

<p>Where <em>someclass</em> is the file name, without the ".php" file extension. You can submit the file name capitalized or lower case. 
Code Igniter doesn't care.</p>

<p>Once loaded you can access your class using the <kbd>lower case</kbd> version:</p>

<code>$this-><kbd>someclass</kbd>->some_function();&nbsp; // Object instances will always be lower case
</code>



<h2>Passing Parameters When Initializing Your Class</h2>

<p>In the library loading function you can dynamically pass data via the second parameter and it will be passed to your class 
constructor:</p>

<code>
$params = array('type' => 'large', 'color' => 'red');<br />
<br />
$this->load->library('Someclass', <kbd>$params</kbd>);</code>

<p>If you use this feature you must set up your class constructor to expect data:</p>

<code>&lt;?php  if (!defined('BASEPATH')) exit('No direct script access allowed');<br />
<br />
class Someclass {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;function Someclass($params)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Do something with $params<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br /><br />
?&gt;</code>

<p class="important">You can also pass parameters stored in a config file.  Simply create a config file named identically to the class <kbd>file name</kbd>
and store it in your <dfn>application/config/</dfn> folder.  Note that if you dynamically pass parameters as described above,
the config file option will not be available.</p>







<h2>Utilizing Code Igniter Resources within Your Library</h2>


<p>To access Code Igniter's native resources within your library use the <kbd>get_instance()</kbd> function.
This function returns the Code Igniter super object.</p>

<p>Normally from within your controller functions you will call any of the available Code Igniter functions using the <kbd>$this</kbd> construct:</p>

<code>
<strong>$this</strong>->load->helper('url');<br />
<strong>$this</strong>->load->library('session');<br />
<strong>$this</strong>->config->item('base_url');<br />
etc.
</code>

<p><kbd>$this</kbd>, however, only works directly within your controllers, your models, or your views.  
If you would like to use Code Igniter's classes from within your own custom classes you can do so as follows:</p>


<p>First, assign the Code Igniter object to a variable:</p>

<code>$CI =& get_instance();</code>

<p>Once you've assigned the object to a variable, you'll use that variable <em>instead</em> of <kbd>$this</kbd>:</p>

<code>
$CI =& get_instance();<br /><br />
$CI->load->helper('url');<br />
$CI->load->library('session');<br />
$CI->config->item('base_url');<br />
etc.
</code>

<p class="important"><strong>Note:</strong> You'll notice that the above get_instance() function is being passed by reference:
<br /><br />
<var>$CI =& get_instance();</var>
<br /><br />
<kbd>This is very important.</kbd> Assigning by reference allows you to use the original Code Igniter object rather than creating a copy of it.</p>


<h2>Replacing Native Libraries with Your Versions</h2>

<p>Simply by naming your class files identically to a native library will cause Code Igniter to use it instead of the native one. To use this
feature you must name the file and the class declaration exactly the same as the native library.  For example, to replace the native <kbd>Email</kbd> library
you'll create a file named <dfn>application/libraries/Email.php</dfn>, and declare your class with:</p>

<code>
class CI_Email {<br /><br />

}</code>

<p>Note that most native classes are prefixed with <kbd>CI_</kbd>.</p>

<p>To load your library you'll see the standard loading function:</p>

<code>$this->load->library('<kbd>email</kbd>');</code>

<p class="important"><strong>Note:</strong> At thit time the Database classes can not be replaced with your own versions.</p>


<h2>Extending Native Libraries</h2>

<p>If all you need to do is add some functionality to an existing library - perhaps add a function or two - then
it's overkill to replace the entire library with your version.  In this case it's better to simply extend the class.</p>

<p>Extending a class is identical to replacing a class with one exception:  The class declaration must extend the parent class
and your new class must be prefixed with <kbd>MY_</kbd>.  For example, to extend the native <kbd>Email</kbd> class
you'll create a file named <dfn>application/libraries/Email.php</dfn>, and declare your class with:</p>

<code>
class MY_Email extends CI_Email {<br /><br />

}</code>

<code>
class MY_Email extends CI_Email {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;function My_Email()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::CI_Email();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</code>

<p class="important"><strong>Important:</strong> To tell Code Igniter to load your sub-class you MUST include <kbd>my_</kbd> in the loading function:</p>

<code>$this->load->library('<kbd>my_</kbd>email');</code>

<p>Once loaded you will use the class variable as you normally would for the class you are extending.  In the case of 
the email class all calls will use:


<code>$this-><kbd>email</kbd>->some_function();</code>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="libraries.html">Using Code Igniter Libraries</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="core_classes.html">Creating Core System Classes</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>