From 8ede1a2ecbb62577afd32996956c5feaf7ddf9b6 Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Wed, 5 Oct 2011 13:34:52 -0500 Subject: replacing the old HTML user guide with a Sphinx-managed user guide --- user_guide_src/source/general/core_classes.rst | 99 ++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 user_guide_src/source/general/core_classes.rst (limited to 'user_guide_src/source/general/core_classes.rst') diff --git a/user_guide_src/source/general/core_classes.rst b/user_guide_src/source/general/core_classes.rst new file mode 100644 index 000000000..8cd3a93dc --- /dev/null +++ b/user_guide_src/source/general/core_classes.rst @@ -0,0 +1,99 @@ +############################ +Creating Core System Classes +############################ + +Every time CodeIgniter runs there are several base classes that are +initialized automatically as part of the core framework. It is possible, +however, to swap any of the core system classes with your own versions +or even extend the core versions. + +**Most users will never have any need to do this, but the option to +replace or extend them does exist for those who would like to +significantly alter the CodeIgniter core.** + +.. note:: Messing with a core system class has a lot of implications, so + make sure you know what you are doing before attempting it. + +System Class List +================= + +The following is a list of the core system files that are invoked every +time CodeIgniter runs: + +- Benchmark +- Config +- Controller +- Exceptions +- Hooks +- Input +- Language +- Loader +- Log +- Output +- Router +- URI +- Utf8 + +Replacing Core Classes +====================== + +To use one of your own system classes instead of a default one simply +place your version inside your local application/core directory:: + + application/core/some-class.php + +If this directory does not exist you can create it. + +Any file named identically to one from the list above will be used +instead of the one normally used. + +Please note that your class must use CI as a prefix. For example, if +your file is named Input.php the class will be named:: + + class CI_Input { } + +Extending Core Class +==================== + +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. Extending a class is nearly identical to replacing a class with a +couple exceptions: + +- The class declaration must extend the parent class. +- Your new class name and filename must be prefixed with MY\_ (this + item is configurable. See below.). + +For example, to extend the native Input class you'll create a file named +application/core/MY_Input.php, and declare your class with:: + + class MY_Input extends CI_Input { } + +Note: If you need to use a constructor in your class make sure you +extend the parent constructor:: + + class MY_Input extends CI_Input {     function __construct()     {         parent::__construct();     } } + +**Tip:** Any functions in your class that are named identically to the +functions in the parent class will be used instead of the native ones +(this is known as "method overriding"). This allows you to substantially +alter the CodeIgniter core. + +If you are extending the Controller core class, then be sure to extend +your new class in your application controller's constructors. + +:: + + class Welcome extends MY_Controller {     function __construct()     {         parent::__construct();     }     function index()     {         $this->load->view('welcome_message');     } } + +Setting Your Own Prefix +----------------------- + +To set your own sub-class prefix, open your +application/config/config.php file and look for this item:: + + $config['subclass_prefix'] = 'MY_'; + +Please note that all native CodeIgniter libraries are prefixed with CI\_ +so DO NOT use that as your prefix. -- cgit v1.2.3-24-g4f1b