Создание классов ядра
При каждом запуске CodeIgniter запускается несколько его базовых классов, которые инициализируются автоматически при загрузке системы. Это части ядра фреймворка. Хотя вы можете заменить любой из системных классов или просто расширить их.
У большинства пользователей никогда не возникнет необходимость менять классы ядра, но сама возможность сделать это делает CodeIgniter очень гибким фреймворком.
Замечание: Смешение ваших наработок со скриптами ядра, как правило, имеет множество последствий, так что подумайте дважды перед тем как сделаете это.
Перечень системных классов
Вот перечень основных системных файлов, которые вызываются при инициализации CodeIgniter:
- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- URI
Замена классов ядра
Для использования ваших скриптов вместо скриптов по умолчанию просто разместите их в вашей папке application/libraries:
application/libraries/some-class.php
Если такой папки нет — создайте ее.
Любое имя файла, идентичное одному из перечисленных выше, будет использоваться вместо настоящего файла из поставки CodeIgnier.
Пожалуйста учтите, что ваш класс должен использовать CI в качестве префикса. Например, если ваш файл назван Input.php, то класс должен объявляться так:
class CI_Input {
}
Расширение классов ядра
Если вам надо расширить функциональность библиотеки, возможно добавить одну-две функции, то вам стоит не переопределять всю библиотеку, а просто расширить ее функциональность. Расширение класса практически идентично его замене за парой исключений:
- Объявление класса должно расширять родительский класс.
- Новое имя класса должно начинаться с префикса MY_ (это можно настроить. Смотри ниже).
Например, чтобы расширить родной класс Input, вы должны создать файл application/libraries/MY_Input.php и объявить внутри класс:
class MY_Input extends CI_Input {
}
Замечание: Если вам в классе необходим конструктор — не забудьте в нем вызвать конструктор родителя:
class MY_Input extends CI_Input {
function My_Input()
{
parent::CI_Input();
}
}
Подсказка: Любая функция в вашем классе, название которой аналогично функции в родительском классе будет использоваться вместо родной (это называется «метод переопределения»). Это позволяет существенно менять ядро CodeIgniter'а.
Установка собственного префикса
Для установки собственного префикса откройте файл application/config/config.php и найдите там:
$config['subclass_prefix'] = 'MY_';
Пожалуйста заметьте, что CodeIgniter использует префикс CI_, поэтому вам НЕЛЬЗЯ его использовать.