CodeIgniter4 扩展控制器
CodeIgniter的核心Controller不应更改,但可以在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(...)
{
// Do Not Edit This Line
parent::initController($request, $response, $logger);
$this->session = \Config\Services::session();
}
附加方法
基本控制器不可路由(系统配置会将其路由到“ 404页面未找到”)。作为一种附加的安全措施,应将您创建的所有新方法声明为protected
或,private
并且只能通过您创建的扩展控制器来访问BaseController
。
其他选择
您可能会发现您需要多个基本控制器。您可以创建新的基本控制器,只要您制造的任何其他控制器扩展了正确的基本控制器即可。例如,如果您的项目具有涉及的公共界面和简单的管理门户,则您可能希望扩展BaseController
到公共控制器并AdminController
使用任何管理控制器。
如果您不想使用基本控制器,则可以通过让控制器扩展系统控制器来绕过它:
class Home extends \CodeIgniter\Controller
{
}