Creación de Clases de Sistema de Núcleo
Cada vez que CodeIgniter corre hay varias clases base que son inicializados automáticamente como parte del núcleo del entorno de trabajo. Es posible, sin embargo, intercambiar cualquiera de las clases de sistema de núcleo con sus propias versiones o incluso extender las versiones de núcleo.
La mayoría de los usuarios nunca necesitará hacer nada de esto, pero la opción de reemplazar o extenderla existe para quienes qioerem significantemente alterar el núcleo de CodeIgniter.
Nota: Meterse con una clase de sistema de núcleo tiene varias implicaciones, así que esté seguro que sabe lo que está haciendo antes de intentarlo.
Lista de Clases de Sistema
La siguiente es una lista de archivos de sistema de núcleo que son invocados cada vez que CodeIgniter corre:
- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- URI
Reemplazar las Clases de Núcelo
Para usar una de sus propias clases de sistema en vez de una de las predeterminadas simplemente ubique su versión dentro de su directorio local application/libraries:
application/libraries/alguna-clase.php
Si el directorio no existe, puedes crearlo.
Cualquier archivo llamado idénticamente a uno de la lista de arriba será usado en vez del normalmente usado
Por favor note que su clase debe usar CI como prefijo. Por ejemplo, si su archivo es llamadoInput.php la clase será llamada:
class CI_Input {
}
Extendiendo las Clases de Núcleo
Si todo lo que necesita hacer es agregar alguna funcionalidad a una librería existente - quizás agregar una función o dos - entonces es exagerado reemplazar la librería entera con su versión. En este caso es mejor simplemente extender la clase. Extender la clase es casi idéntico a reemplazar la clase con un par de exceptiones:
- La declaración de clase debe extender la clase padre.
- Su nuevo nombre de clase y de archivo debe ser prefijado con MY_ (este item es configurable. Vea abajo.).
Por ejemplo, para extender la clase nativa Input creará un archivo llamado dfn>application/libraries/MY_Input.php, y declara su clase con:
class MY_Input extends CI_Input {
}
Nota: Si necesita usar un constructor en su clase, asegurese que extiende al constructor del padre:
class MY_Input extends CI_Input {
function My_Input()
{
parent::CI_Input();
}
}
Consejo: Cualquier función en su clase que es nombrada idénticamente a las funciones en la clase padre serán usadas en vez de las nativas (esto es conocido como "sobreescritura de método"). Esto le permite alterar sustancialmente el núcleo de CodeIgniter.
Estableciendo Su Propio Prefijo
Para establecer su propio prefijo de sub-clase, abra su archivo application/config/config.php y busque este item:
$config['subclass_prefix'] = 'MY_';
Por favor note que todas las librerías nativas de CodeIgniter están prefijadas con CI_ para NO usar ese prefijo.