我严格按照Phil Sturgeon的方法文章来扩展基本控制器.但我仍然有一些错误.
我的3个班:
// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
public function __construct(){
parent::__construct();
}
}
// application/libraries/Public_Controller.php
class Public_Controller extends MY_Controller{
public function __construct(){
parent::__construct();
}
}
// application/controllers/user.php
class User extends Public_Controller{
public function __construct(){
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
致命错误:第2行的/srv/www/xxx/application/controllers/user.php中找不到"Public_Controller"类
好奇的是,如果我直接扩展,以下代码片段正在工作MY_Controller:
// application/controllers/user.php
class User extends MY_Controller{
public function __construct(){
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
我通过__autoload()或手动加载了控制器.控制器成功加载.
CI版本:1.7.3
您需要在MY_Controller中需要Public Controller
// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
public function __construct(){
parent::__construct();
}
}
require(APPPATH.'libraries/Public_Controller.php');
Run Code Online (Sandbox Code Playgroud)
您收到错误,因为从未加载Public_Controller.这样做可以让你扩展Public_Controller
我喜欢你在做什么,因为我一直这样做.
当您想要创建Admin_Controller时,也可以在MY_Controller中执行此操作
// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
public function __construct(){
parent::__construct();
}
}
require(APPPATH.'libraries/Public_Controller.php'); // contains some logic applicable only to `public` controllers
require(APPPATH.'libraries/Admin_Controller.php'); // contains some logic applicable only to `admin` controllers
Run Code Online (Sandbox Code Playgroud)
你应该把Public_controller在MY_Controller里面MY_Controller.php
// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
public function __construct(){
parent::__construct();
}
}
class Public_Controller extends MY_Controller{
public function __construct(){
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
我在任何地方使用__construct它工作正常我最近写了一篇关于如何将auth逻辑包装到扩展控制器中的文章.当我开始讨论构建控制器时,这大概只有一半.