擴充控制器

CodeIgniter 的核心控制器不應該被改變,但是在 app/Controllers/BaseController.php 中,我們為你提供了一個預設的控制器擴充類別。你所製作的任何控制器都應該繼承 BaseController 來利用預載元件以及你提供的任何額外功能:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class Home extends BaseController
{
    // ...
}

預載元件

基本控制器是一個好地方,可以在每次專案執行時載入任何輔助函數、模型、程式庫,以及服務等。輔助函數應該被加入到預先定義好的 $helpers 陣列中。例如:你想讓 HTML 以及文字輔助函數普遍可用:

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

任何需要載入的元件或需要處理的資料都應該加入到建構函數 initController() 中。例如:你的專案大量使用到工作階段程式庫,你可以會需要在這裡啟動它:

public function initController(...)
{
    // 請不要編輯這行
    parent::initController($request, $response, $logger);

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

新增方法

基本控制器是不允許被路由的(系統設定將其路由導向至 404 找不到頁面)。作為撰寫程式的安全實現,你所創建的 所有 新方法都應該宣告為 保護私有 ,並且只能透過繼承 BaseController 類別的控制器才能存取。

其他選項

你可能會發現你需要一個或以上的基本控制器,你可以為你的需求創建基本控制器,只要你創建的其他控制器繼承了正確的基本控制器,就可以創建新的基本控制器。例如:你的專案有一個涉及到公開的介面和一個簡單的管理入口,你可能會希望將公開的介面繼承 BaseController ,並且將任何與管理功能相關的控制器繼承 AdminController 類別。

如果你不想使用基本控制器,你可以透過讓你的控制器繼承系統控制器來繞過它:

class Home extends \CodeIgniter\Controller
{

}