擴(kuò)展 Controller?

CodeIgniter 的核心類(lèi) Controller 不應(yīng)該被修改, 但是在 app/Controllers/BaseController.php 提供了一個(gè)默認(rèn)的 Controller 擴(kuò)展。 你創(chuàng)建的任何新控制器,都應(yīng)該繼承 BaseController 以利用組件預(yù)加載和你添加的任何其他功能:

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class Home extends BaseController {

}

組件預(yù)加載?

基礎(chǔ)控制器是每次運(yùn)行項(xiàng)目時(shí),加載你希望使用的任何 helpers, models, libraries, services 等的好位置。 Helpers 應(yīng)該添加到預(yù)先提供的 $helpers 數(shù)組。例如, 如果你想要在所有控制器中使用 HTML 和 Text 輔助函數(shù):

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

其他任何要加載的組件或者要處理的數(shù)據(jù),都應(yīng)該添加到 initController() 中。 例如,如果你的項(xiàng)目要大量使用 Session 類(lèi),那你可以在這里啟動(dòng)它:

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

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

附加方法?

基礎(chǔ)控制器不可以被路由(系統(tǒng)配置會(huì)將它路由到 404 Page Not Found)。作為一項(xiàng)附加的安全措施,你應(yīng)該將創(chuàng)建的 所有 新方法聲明為 protected 或者 private, 并且只允許繼承 BaseController 的控制器進(jìn)行訪問(wèn)。

其他配置?

你可能會(huì)需要多個(gè)基礎(chǔ)控制器。你可以創(chuàng)建新的基礎(chǔ)控制器,只要確保你創(chuàng)建的任何控制器正確繼承了基礎(chǔ)控制器。例如,你的項(xiàng)目同時(shí)有面向普通用戶的公共控制器和面向管理員的后臺(tái)控制器。 則你可以讓所有公共控制器繼承 BaseController ,創(chuàng)建一個(gè) AdminController 讓所有后臺(tái)控制器來(lái)繼承。

如果你不想使用基礎(chǔ)控制器,則可以通過(guò)繼承系統(tǒng)控制器來(lái)代替:

class Home extends \CodeIgniter\Controller
{

}