Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Создание классов ядра (системных классов)

Каждый раз, когда запускается CodeIgniter, загружаются несколько базовых классов, которые являются частями ядра фреймворка. Однако, вы можете заменить некоторые системные классы своими версиями, или расширить их.

Подавляющее большинство пользователей никогда не нуждаются в этом, но возможности замены и расширения существуют.

Примечание: Вмешательство в работу классов ядра несет множество последствий, поэтому будьте уверены в том, что вы точно понимаете, что хотите, перед тем, как начинать делать что-либо.

## Список системных классов

Вот список системных классов, которые загружаются при каждом запуске CodeIgniter:

- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- URI
- Utf8

## Замена классов ядра

Чтобы использовать один из ваших собственых системных классов вместо дефолтного, поместите вашу версию в локальную директорию application/core:

`application/core/some-class.php`

Если эта директория не существует, создайте ее.

Любое имя файла, идентичное тем, что представлены в списке выше, будет загружать ваш класс вместо родного.

Пожалуйста обратите внимание, что ваш класс должен иметь префикс `CI`. Например, если ваш файл называется `Input.php`, класс должен называться::

`class CI_Input {
}`

## Расширение классов ядра

Если все, что вам нужно — это добавить какую-то функциональность в существующие библитеки, просто добавить функцию или две, тогда излишне будет заменять целую библиотеку своей версией. В этом случае лучше просто расширить класс. Расширение класса практически идентично его замене, с несколькими исключениями:

- Декларация класса должна расширять родительский класс.
- Имя нового класса и его файла должны иметь префикс `MY_` (этот элемент конфигурируется, смотрите ниже).

Например, чтобы расширить родной класс `Input`, вы должны создать файл, называющийся application/core/`MY_Input.php`, и декларировать ваш класс так:

`class MY_Input extends CI_Input {
}`

Примечание: Если вы используете конструктор в классе, убедитесь, что он расширяет родительский конструктор:

`class MY_Input extends CI_Input {
function __construct()
{
parent::__construct();
}
}`

Примечание: Любые функци в вашем классе, которые называются идентично функциям родительского, будут использованы вместо родных (это известно как «перегрузка метода»). Это позволит вам в значительной степени изменять ядро CodeIgniter.

Если вы расширяете класс Controller, убедитесь в том, что ваши контроллеры наследуют его.

`class Welcome extends MY_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('welcome_message');
}
}`

### Установка собственного префикса

Для того, чтобы установить собственный префикс подклассов, откройте ваш файл application/config/config.php и найдите в нем следующее:

`$config['subclass_prefix'] = 'MY_';`

Пожалуйста помните, что все родные библиотеки CodeIgniter имеют префикс `CI_`, поэтому вы не должны использовать такой префикс.

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter