summaryrefslogtreecommitdiffstats
path: root/user_guide_src/source/general/hooks.rst
diff options
context:
space:
mode:
Diffstat (limited to 'user_guide_src/source/general/hooks.rst')
-rw-r--r--user_guide_src/source/general/hooks.rst127
1 files changed, 0 insertions, 127 deletions
diff --git a/user_guide_src/source/general/hooks.rst b/user_guide_src/source/general/hooks.rst
deleted file mode 100644
index 6cc3407a3..000000000
--- a/user_guide_src/source/general/hooks.rst
+++ /dev/null
@@ -1,127 +0,0 @@
-####################################
-Hooks - Extending the Framework Core
-####################################
-
-CodeIgniter's Hooks feature provides a means to tap into and modify the
-inner workings of the framework without hacking the core files. When
-CodeIgniter runs it follows a specific execution process, diagramed in
-the :doc:`Application Flow <../overview/appflow>` page. There may be
-instances, however, where you'd like to cause some action to take place
-at a particular stage in the execution process. For example, you might
-want to run a script right before your controllers get loaded, or right
-after, or you might want to trigger one of your own scripts in some
-other location.
-
-Enabling Hooks
-==============
-
-The hooks feature can be globally enabled/disabled by setting the
-following item in the **application/config/config.php** file::
-
- $config['enable_hooks'] = TRUE;
-
-Defining a Hook
-===============
-
-Hooks are defined in the **application/config/hooks.php** file.
-Each hook is specified as an array with this prototype::
-
- $hook['pre_controller'] = array(
- 'class' => 'MyClass',
- 'function' => 'Myfunction',
- 'filename' => 'Myclass.php',
- 'filepath' => 'hooks',
- 'params' => array('beer', 'wine', 'snacks')
- );
-
-**Notes:**
-
-The array index correlates to the name of the particular hook point you
-want to use. In the above example the hook point is pre_controller. A
-list of hook points is found below. The following items should be
-defined in your associative hook array:
-
-- **class** The name of the class you wish to invoke. If you prefer to
- use a procedural function instead of a class, leave this item blank.
-- **function** The function (or method) name you wish to call.
-- **filename** The file name containing your class/function.
-- **filepath** The name of the directory containing your script.
- Note:
- Your script must be located in a directory INSIDE your *application/*
- directory, so the file path is relative to that directory. For example,
- if your script is located in *application/hooks/*, you will simply use
- 'hooks' as your filepath. If your script is located in
- *application/hooks/utilities/* you will use 'hooks/utilities' as your
- filepath. No trailing slash.
-- **params** Any parameters you wish to pass to your script. This item
- is optional.
-
-You can also use lambda/anoymous functions (or closures) as hooks, with
-a simpler syntax::
-
- $hook['post_controller'] = function()
- {
- /* do something here */
- };
-
-Multiple Calls to the Same Hook
-===============================
-
-If want to use the same hook point with more than one script, simply
-make your array declaration multi-dimensional, like this::
-
- $hook['pre_controller'][] = array(
- 'class' => 'MyClass',
- 'function' => 'MyMethod',
- 'filename' => 'Myclass.php',
- 'filepath' => 'hooks',
- 'params' => array('beer', 'wine', 'snacks')
- );
-
- $hook['pre_controller'][] = array(
- 'class' => 'MyOtherClass',
- 'function' => 'MyOtherMethod',
- 'filename' => 'Myotherclass.php',
- 'filepath' => 'hooks',
- 'params' => array('red', 'yellow', 'blue')
- );
-
-Notice the brackets after each array index::
-
- $hook['pre_controller'][]
-
-This permits you to have the same hook point with multiple scripts. The
-order you define your array will be the execution order.
-
-Hook Points
-===========
-
-The following is a list of available hook points.
-
-- **pre_system**
- Called very early during system execution. Only the benchmark and
- hooks class have been loaded at this point. No routing or other
- processes have happened.
-- **pre_controller**
- Called immediately prior to any of your controllers being called.
- All base classes, routing, and security checks have been done.
-- **post_controller_constructor**
- Called immediately after your controller is instantiated, but prior
- to any method calls happening.
-- **post_controller**
- Called immediately after your controller is fully executed.
-- **display_override**
- Overrides the ``_display()`` method, used to send the finalized page
- to the web browser at the end of system execution. This permits you
- to use your own display methodology. Note that you will need to
- reference the CI superobject with ``$this->CI =& get_instance()`` and
- then the finalized data will be available by calling
- ``$this->CI->output->get_output()``.
-- **cache_override**
- Enables you to call your own method instead of the ``_display_cache()``
- method in the :doc:`Output Library <../libraries/output>`. This permits
- you to use your own cache display mechanism.
-- **post_system**
- Called after the final rendered page is sent to the browser, at the
- end of system execution after the finalized data is sent to the
- browser. \ No newline at end of file