Spec-Zone.ru › CodeIgniter 4

Расширение контроллера

Основной контроллер CodeIgniter изменять не следует, но для вас предоставлено расширение по умолчанию в файле app/Controllers/BaseController.php. Любые новые контроллеры, которые вы создадите, должны расширять BaseController для использования предварительно загруженных компонентов и любой дополнительной функциональности, которую вы предоставите:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class Home extends BaseController
{
    // ...
}

Предварительная загрузка компонентов

Базовый контроллер — отличное место для загрузки любых вспомогательных функций, моделей, библиотек, сервисов и т. д., которые вы планируете использовать каждый раз при запуске проекта. Вспомогательные функции следует добавлять в предопределенный массив $helpers. Например, если вы хотите, чтобы вспомогательные функции HTML и Text были доступны во всех случаях:

protected $helpers = ['html', 'text'];

Любые другие компоненты для загрузки или данные для обработки следует добавлять в конструктор initController(). Например, если в вашем проекте активно используется библиотека сессий, вы можете инициировать её здесь:

public function initController(...)
{
    // Do Not Edit This Line
    parent::initController($request, $response, $logger);

    $this->session = \Config\Services::session();
}

Дополнительные методы

Базовый контроллер не маршрутизируется (маршрутизация выполняется системной конфигурацией в 404 Page Not Found). В качестве дополнительной меры безопасности все новые методы, которые вы создаёте, должны быть объявлены как protected или private и доступны только через контроллеры, которые вы создаете и которые расширяют BaseController.

Другие варианты

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

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

class Home extends \CodeIgniter\Controller
{

}

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/extending/basecontroller.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API