Создание основных системных классов
Каждый раз при запуске CodeIgniter инициализируются несколько базовых классов, которые являются частью ядра фреймворка. Однако, вы можете заменить любой из этих классов своими собственными версиями или даже расширить существующие.
Большинству пользователей никогда не понадобится это делать, но возможность замены или расширения классов существует для тех, кто хочет существенно изменить ядро CodeIgniter.
Примечание
Вмешательство в базовый системный класс влечёт за собой много последствий, поэтому убедитесь, что вы понимаете, что делаете, прежде чем пытаться это сделать.
Список системных классов
Ниже представлен список основных системных файлов, которые вызываются при каждом запуске CodeIgniter:
- Benchmark
- Config
- Controller
- Exceptions
- Hooks
- Input
- Language
- Loader
- Log
- Output
- Router
- Security
- 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 {
public function __construct()
{
parent::__construct();
// Your own constructor code
}
}
Подсказка: Любые функции в вашем классе, имеющие одинаковые имена с методами в родительском классе, будут использоваться вместо встроенных (это известно как «переопределение методов»). Это позволяет существенно изменить ядро CodeIgniter.
Если вы расширяете основной класс Controller, убедитесь, что вы расширяете ваш новый класс в конструкторах вашего контроллера приложения.
class Welcome extends MY_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Настройка собственного префикса
Чтобы настроить собственный префикс подкласса, откройте файл application/config/config.php и найдите этот пункт:
$config['subclass_prefix'] = 'MY_';
Обратите внимание, что все встроенные библиотеки CodeIgniter имеют префикс CI_, поэтому НЕ используйте его в качестве своего префикса.
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/core_classes.html