擴(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
{
}