Codeigniter扩展了扩展的MY_Controller [英] Codeigniter extending extended MY_Controller
问题描述
我严格遵守操作指示文章Phil Sturgeon ,扩展基本控制器。
I have strictly followed the how-to article by Phil Sturgeon, to extend the base controller. But I get still some errors.
我的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();
}
}
致命错误:Class 'public_Controller'在第2行的/srv/www/xxx/application/controllers/user.php中找不到
Fatal error: Class 'Public_Controller' not found in /srv/www/xxx/application/controllers/user.php on line 2
好奇的是,如果我直接从 MY_Controller
延伸:
Curious is that the following snippet is working, if I directly extends from MY_Controller
:
// application/controllers/user.php
class User extends MY_Controller{
public function __construct(){
parent::__construct();
}
}
我已经通过 __ autoload()
或手动。控制器已成功加载。
I have loaded the controllers via __autoload()
or manually. The controllers are loaded succesfully.
CI-Version:1.7.3
CI-Version: 1.7.3
推荐答案
您需要在MY_Controller中使用公共控制器
You need to require the Public Controller in your MY_Controller
// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
public function __construct(){
parent::__construct();
}
}
require(APPPATH.'libraries/Public_Controller.php');
您得到错误,因为Public_Controller从未加载。这样做可以让你扩展 Public_Controller
You get the error because Public_Controller was never loaded. Doing this would allow you to extend from Public_Controller
我喜欢你在做什么,因为我一直做。
I like what you are doing because I do that all the time.
当您要创建一个Admin_Controller时,也可以在MY_Controller中这样做。
You can do this also in your MY_Controller when you want to create an Admin_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
这篇关于Codeigniter扩展了扩展的MY_Controller的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!