Codeigniter 扩展扩展 MY_Controller [英] Codeigniter extending extended MY_Controller
问题描述
我严格遵循了操作方法Phil Sturgeon 撰写的文章,用于扩展基本控制器.但我仍然遇到一些错误.
我的 3 节课:
//application/libraries/MY_Controller.php类 MY_Controller 扩展控制器{公共函数 __construct(){parent::__construct();}}//应用程序/库/Public_Controller.php类 Public_Controller 扩展 MY_Controller{公共函数 __construct(){parent::__construct();}}//应用程序/控制器/user.php类用户扩展 Public_Controller{公共函数 __construct(){parent::__construct();}}
<块引用>
致命错误:在第 2 行的/srv/www/xxx/application/controllers/user.php 中找不到Public_Controller"类
好奇的是,如果我直接从 MY_Controller
扩展,下面的代码片段是有效的:
//application/controllers/user.php类用户扩展 MY_Controller{公共函数 __construct(){parent::__construct();}}
我已经通过 __autoload()
或手动加载了控制器.控制器加载成功.
CI 版本:1.7.3
你需要在你的 MY_Controller 中 require Public Controller
//application/libraries/MY_Controller.php类 MY_Controller 扩展控制器{公共函数 __construct(){parent::__construct();}}需要(APPPATH.'libraries/Public_Controller.php');
您收到错误是因为 Public_Controller 从未加载过.这样做将允许您从 Public_Controller
我喜欢你正在做的事情,因为我一直都在这样做.
当您想创建 Admin_Controller 时,您也可以在 MY_Controller 中执行此操作
//application/libraries/MY_Controller.php类 MY_Controller 扩展控制器{公共函数 __construct(){parent::__construct();}}需要(APPPATH.'libraries/Public_Controller.php');//包含一些仅适用于 `public` 控制器的逻辑需要(APPPATH.'libraries/Admin_Controller.php');//包含一些仅适用于 `admin` 控制器的逻辑
I have strictly followed the how-to article by Phil Sturgeon, to extend the base controller. But I get still some errors.
My 3 classes:
// 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();
}
}
Fatal error: Class 'Public_Controller' not found in /srv/www/xxx/application/controllers/user.php on line 2
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();
}
}
I have loaded the controllers via __autoload()
or manually. The controllers are loaded succesfully.
CI-Version: 1.7.3
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');
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.
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屋!