461 lines
16 KiB
ReStructuredText
461 lines
16 KiB
ReStructuredText
############
|
|
Loader Class
|
|
############
|
|
|
|
Loader, as the name suggests, is used to load elements. These elements
|
|
can be libraries (classes) :doc:`View files <../general/views>`,
|
|
:doc:`Drivers <../general/drivers>`,
|
|
:doc:`Helpers <../general/helpers>`,
|
|
:doc:`Models <../general/models>`, or your own files.
|
|
|
|
.. note:: This class is initialized automatically by the system so there
|
|
is no need to do it manually.
|
|
|
|
.. contents::
|
|
:local:
|
|
|
|
.. raw:: html
|
|
|
|
<div class="custom-index container"></div>
|
|
|
|
**********************
|
|
Application "Packages"
|
|
**********************
|
|
|
|
An application package allows for the easy distribution of complete sets
|
|
of resources in a single directory, complete with its own libraries,
|
|
models, helpers, config, and language files. It is recommended that
|
|
these packages be placed in the application/third_party directory. Below
|
|
is a sample map of an package directory.
|
|
|
|
The following is an example of a directory for an application package
|
|
named "Foo Bar".
|
|
|
|
::
|
|
|
|
/application/third_party/foo_bar
|
|
|
|
config/
|
|
helpers/
|
|
language/
|
|
libraries/
|
|
models/
|
|
|
|
Whatever the purpose of the "Foo Bar" application package, it has its
|
|
own config files, helpers, language files, libraries, and models. To use
|
|
these resources in your controllers, you first need to tell the Loader
|
|
that you are going to be loading resources from a package, by adding the
|
|
package path via the ``add_package_path()`` method.
|
|
|
|
Package view files
|
|
------------------
|
|
|
|
By Default, package view files paths are set when ``add_package_path()``
|
|
is called. View paths are looped through, and once a match is
|
|
encountered that view is loaded.
|
|
|
|
In this instance, it is possible for view naming collisions within
|
|
packages to occur, and possibly the incorrect package being loaded. To
|
|
ensure against this, set an optional second parameter of FALSE when
|
|
calling ``add_package_path()``.
|
|
|
|
::
|
|
|
|
$this->load->add_package_path(APPPATH.'my_app', FALSE);
|
|
$this->load->view('my_app_index'); // Loads
|
|
$this->load->view('welcome_message'); // Will not load the default welcome_message b/c the second param to add_package_path is FALSE
|
|
|
|
// Reset things
|
|
$this->load->remove_package_path(APPPATH.'my_app');
|
|
|
|
// Again without the second parameter:
|
|
$this->load->add_package_path(APPPATH.'my_app');
|
|
$this->load->view('my_app_index'); // Loads
|
|
$this->load->view('welcome_message'); // Loads
|
|
|
|
***************
|
|
Class Reference
|
|
***************
|
|
|
|
.. php:class:: CI_Loader
|
|
|
|
.. php:method:: library($library[, $params = NULL[, $object_name = NULL]])
|
|
|
|
:param mixed $library: Library name as a string or an array with multiple libraries
|
|
:param array $params: Optional array of parameters to pass to the loaded library's constructor
|
|
:param string $object_name: Optional object name to assign the library to
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
This method is used to load core classes.
|
|
|
|
.. note:: We use the terms "class" and "library" interchangeably.
|
|
|
|
For example, if you would like to send email with CodeIgniter, the first
|
|
step is to load the email class within your controller::
|
|
|
|
$this->load->library('email');
|
|
|
|
Once loaded, the library will be ready for use, using ``$this->email``.
|
|
|
|
Library files can be stored in subdirectories within the main
|
|
"libraries" directory, or within your personal *application/libraries*
|
|
directory. To load a file located in a subdirectory, simply include the
|
|
path, relative to the "libraries" directory. For example, if you have
|
|
file located at::
|
|
|
|
libraries/flavors/Chocolate.php
|
|
|
|
You will load it using::
|
|
|
|
$this->load->library('flavors/chocolate');
|
|
|
|
You may nest the file in as many subdirectories as you want.
|
|
|
|
Additionally, multiple libraries can be loaded at the same time by
|
|
passing an array of libraries to the load method.
|
|
::
|
|
|
|
$this->load->library(array('email', 'table'));
|
|
|
|
**Setting options**
|
|
|
|
The second (optional) parameter allows you to optionally pass
|
|
configuration setting. You will typically pass these as an array::
|
|
|
|
$config = array (
|
|
'mailtype' => 'html',
|
|
'charset' => 'utf-8',
|
|
'priority' => '1'
|
|
);
|
|
|
|
$this->load->library('email', $config);
|
|
|
|
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.
|
|
|
|
Please take note, when multiple libraries are supplied in an array for
|
|
the first parameter, each will receive the same parameter information.
|
|
|
|
**Assigning a Library to a different object name**
|
|
|
|
If the third (optional) 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 Calendar, it will be assigned to a variable named
|
|
``$this->calendar``.
|
|
|
|
If you prefer to set your own class names you can pass its value to the
|
|
third parameter::
|
|
|
|
$this->load->library('calendar', NULL, 'my_calendar');
|
|
|
|
// Calendar class is now accessed using:
|
|
$this->my_calendar
|
|
|
|
Please take note, when multiple libraries are supplied in an array for
|
|
the first parameter, this parameter is discarded.
|
|
|
|
.. php:method:: driver($library[, $params = NULL[, $object_name]])
|
|
|
|
:param mixed $library: Library name as a string or an array with multiple libraries
|
|
:param array $params: Optional array of parameters to pass to the loaded library's constructor
|
|
:param string $object_name: Optional object name to assign the library to
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
This method is used to load driver libraries, acts very much like the
|
|
``library()`` method.
|
|
|
|
As an example, if you would like to use sessions with CodeIgniter, the first
|
|
step is to load the session driver within your controller::
|
|
|
|
$this->load->driver('session');
|
|
|
|
Once loaded, the library will be ready for use, using ``$this->session``.
|
|
|
|
Driver files must be stored in a subdirectory within the main
|
|
"libraries" directory, or within your personal *application/libraries*
|
|
directory. The subdirectory must match the parent class name. Read the
|
|
:doc:`Drivers <../general/drivers>` description for details.
|
|
|
|
Additionally, multiple driver libraries can be loaded at the same time by
|
|
passing an array of drivers to the load method.
|
|
::
|
|
|
|
$this->load->driver(array('session', 'cache'));
|
|
|
|
**Setting options**
|
|
|
|
The second (optional) parameter allows you to optionally pass
|
|
configuration settings. You will typically pass these as an array::
|
|
|
|
$config = array(
|
|
'sess_driver' => 'cookie',
|
|
'sess_encrypt_cookie' => true,
|
|
'encryption_key' => 'mysecretkey'
|
|
);
|
|
|
|
$this->load->driver('session', $config);
|
|
|
|
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.
|
|
|
|
**Assigning a Driver to a different object name**
|
|
|
|
If the third (optional) parameter is blank, the library will be assigned
|
|
to an object with the same name as the parent class. For example, if
|
|
the library is named Session, it will be assigned to a variable named
|
|
``$this->session``.
|
|
|
|
If you prefer to set your own class names you can pass its value to the
|
|
third parameter::
|
|
|
|
$this->load->library('session', '', 'my_session');
|
|
|
|
// Session class is now accessed using:
|
|
$this->my_session
|
|
|
|
.. php:method:: view($view[, $vars = array()[, return = FALSE]])
|
|
|
|
:param string $view: View name
|
|
:param array $vars: An associative array of variables
|
|
:param bool $return: Whether to return the loaded view
|
|
:returns: View content string if $return is set to TRUE, otherwise CI_Loader instance (method chaining)
|
|
:rtype: mixed
|
|
|
|
This method is used to load your View files. If you haven't read the
|
|
:doc:`Views <../general/views>` section of the user guide it is
|
|
recommended that you do since it shows you how this method is
|
|
typically used.
|
|
|
|
The first parameter is required. It is the name of the view file you
|
|
would like to load.
|
|
|
|
.. note:: The .php file extension does not need to be specified unless
|
|
you use something other than .php.
|
|
|
|
The second **optional** parameter can take an associative array or an
|
|
object as input, which it runs through the PHP
|
|
`extract() <http://php.net/extract>`_ function to convert to variables
|
|
that can be used in your view files. Again, read the
|
|
:doc:`Views <../general/views>` page to learn how this might be useful.
|
|
|
|
The third **optional** parameter lets you change the behavior of the
|
|
method 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 TRUE (boolean) it will return data. The
|
|
default behavior is FALSE, which sends it to your browser. Remember to
|
|
assign it to a variable if you want the data returned::
|
|
|
|
$string = $this->load->view('myfile', '', TRUE);
|
|
|
|
.. php:method:: vars($vars[, $val = ''])
|
|
|
|
:param mixed $vars: An array of variables or a single variable name
|
|
:param mixed $val: Optional variable value
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
This method takes an associative array as input and generates
|
|
variables using the PHP `extract() <http://php.net/extract>`_
|
|
function. This method produces the same result as using the second
|
|
parameter of the ``$this->load->view()`` method above. The reason you
|
|
might want to use this method 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 method. You can
|
|
have multiple calls to this method. The data get cached and merged
|
|
into one array for conversion to variables.
|
|
|
|
.. php:method:: get_var($key)
|
|
|
|
:param string $key: Variable name key
|
|
:returns: Value if key is found, NULL if not
|
|
:rtype: mixed
|
|
|
|
This method checks the associative array of variables available to
|
|
your views. This is useful if for any reason a var is set in a library
|
|
or another controller method using ``$this->load->vars()``.
|
|
|
|
.. php:method:: get_vars()
|
|
|
|
:returns: An array of all assigned view variables
|
|
:rtype: array
|
|
|
|
This method retrieves all variables available to your views.
|
|
|
|
.. php:method:: clear_vars()
|
|
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
Clears cached view variables.
|
|
|
|
.. php:method:: model($model[, $name = ''[, $db_conn = FALSE]])
|
|
|
|
:param mixed $model: Model name or an array containing multiple models
|
|
:param string $name: Optional object name to assign the model to
|
|
:param string $db_conn: Optional database configuration group to load
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
::
|
|
|
|
$this->load->model('model_name');
|
|
|
|
|
|
If your model is located in a subdirectory, include the relative path
|
|
from your models directory. For example, if you have a model located at
|
|
*application/models/blog/Queries.php* you'll load it using::
|
|
|
|
$this->load->model('blog/queries');
|
|
|
|
If you would like your model assigned to a different object name you can
|
|
specify it via the second parameter of the loading method::
|
|
|
|
$this->load->model('model_name', 'fubar');
|
|
$this->fubar->method();
|
|
|
|
.. php:method:: database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])
|
|
|
|
:param mixed $params: Database group name or configuration options
|
|
:param bool $return: Whether to return the loaded database object
|
|
:param bool $query_builder: Whether to load the Query Builder
|
|
:returns: Loaded CI_DB instance or FALSE on failure if $return is set to TRUE, otherwise CI_Loader instance (method chaining)
|
|
:rtype: mixed
|
|
|
|
This method lets you load the database class. The two parameters are
|
|
**optional**. Please see the :doc:`database <../database/index>`
|
|
section for more info.
|
|
|
|
.. php:method:: dbforge([$db = NULL[, $return = FALSE]])
|
|
|
|
:param object $db: Database object
|
|
:param bool $return: Whether to return the Database Forge instance
|
|
:returns: Loaded CI_DB_forge instance if $return is set to TRUE, otherwise CI_Loader instance (method chaining)
|
|
:rtype: mixed
|
|
|
|
Loads the :doc:`Database Forge <../database/forge>` class, please refer
|
|
to that manual for more info.
|
|
|
|
.. php:method:: dbutil([$db = NULL[, $return = FALSE]])
|
|
|
|
:param object $db: Database object
|
|
:param bool $return: Whether to return the Database Utilities instance
|
|
:returns: Loaded CI_DB_utility instance if $return is set to TRUE, otherwise CI_Loader instance (method chaining)
|
|
:rtype: mixed
|
|
|
|
Loads the :doc:`Database Utilities <../database/utilities>` class, please
|
|
refer to that manual for more info.
|
|
|
|
.. php:method:: helper($helpers)
|
|
|
|
:param mixed $helpers: Helper name as a string or an array containing multiple helpers
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
This method loads helper files, where file_name is the name of the
|
|
file, without the _helper.php extension.
|
|
|
|
.. php:method:: file($path[, $return = FALSE])
|
|
|
|
:param string $path: File path
|
|
:param bool $return: Whether to return the loaded file
|
|
:returns: File contents if $return is set to TRUE, otherwise CI_Loader instance (method chaining)
|
|
:rtype: mixed
|
|
|
|
This is a generic file loading method. 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 boolean TRUE it will instead return the data as a
|
|
string.
|
|
|
|
.. php:method:: language($files[, $lang = ''])
|
|
|
|
:param mixed $files: Language file name or an array of multiple language files
|
|
:param string $lang: Language name
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
This method is an alias of the :doc:`language loading
|
|
method <language>`: ``$this->lang->load()``.
|
|
|
|
.. php:method:: config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
|
|
|
|
:param string $file: Configuration file name
|
|
:param bool $use_sections: Whether configuration values should be loaded into their own section
|
|
:param bool $fail_gracefully: Whether to just return FALSE in case of failure
|
|
:returns: TRUE on success, FALSE on failure
|
|
:rtype: bool
|
|
|
|
This method is an alias of the :doc:`config file loading
|
|
method <config>`: ``$this->config->load()``
|
|
|
|
.. php:method:: is_loaded($class)
|
|
|
|
:param string $class: Class name
|
|
:returns: Singleton property name if found, FALSE if not
|
|
:rtype: mixed
|
|
|
|
Allows you to check if a class has already been loaded or not.
|
|
|
|
.. note:: The word "class" here refers to libraries and drivers.
|
|
|
|
If the requested class has been loaded, the method returns its assigned
|
|
name in the CI Super-object and FALSE if it's not::
|
|
|
|
$this->load->library('form_validation');
|
|
$this->load->is_loaded('Form_validation'); // returns 'form_validation'
|
|
|
|
$this->load->is_loaded('Nonexistent_library'); // returns FALSE
|
|
|
|
.. important:: If you have more than one instance of a class (assigned to
|
|
different properties), then the first one will be returned.
|
|
|
|
::
|
|
|
|
$this->load->library('form_validation', $config, 'fv');
|
|
$this->load->library('form_validation');
|
|
|
|
$this->load->is_loaded('Form_validation'); // returns 'fv'
|
|
|
|
.. php:method:: add_package_path($path[, $view_cascade = TRUE])
|
|
|
|
:param string $path: Path to add
|
|
:param bool $view_cascade: Whether to use cascading views
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
Adding a package path instructs the Loader class to prepend a given path
|
|
for subsequent requests for resources. As an example, the "Foo Bar"
|
|
application package above has a library named Foo_bar.php. In our
|
|
controller, we'd do the following::
|
|
|
|
$this->load->add_package_path(APPPATH.'third_party/foo_bar/')
|
|
->library('foo_bar');
|
|
|
|
.. php:method:: remove_package_path([$path = ''])
|
|
|
|
:param string $path: Path to remove
|
|
:returns: CI_Loader instance (method chaining)
|
|
:rtype: CI_Loader
|
|
|
|
When your controller is finished using resources from an application
|
|
package, and particularly if you have other application packages you
|
|
want to work with, you may wish to remove the package path so the Loader
|
|
no longer looks in that directory for resources. To remove the last path
|
|
added, simply call the method with no parameters.
|
|
|
|
Or to remove a specific package path, specify the same path previously
|
|
given to ``add_package_path()`` for a package.::
|
|
|
|
$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
|
|
|
|
.. php:method:: get_package_paths([$include_base = TRUE])
|
|
|
|
:param bool $include_base: Whether to include BASEPATH
|
|
:returns: An array of package paths
|
|
:rtype: array
|
|
|
|
Returns all currently available package paths. |