|  | 
 
| 以下结果只在本地单机测试成功,如有不足请指正。 
 本人在扩展Controller类的时候也遇到了无法找到新类的问题,错误代码类似于:
 Fatal error:  Class 'MY_Base' not found in D:\wamp\www\CodeIgniter\system\application\controllers\main.php on line 3
 
 文件名是MY_Base.php(application\libraries目录下),测试扩展代码如下:
 
 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 class MY_Base extends Controller {
 
 function MY_Base()
 {
 parent::Controller();
 echo "base";
 }
 }
 ?>
 
 然后普通控制器继承自MY_Base:
 
 class Main extends MY_Base{
 
 function Main()
 {
 parent::MY_Base();
 }
 
 
 function index()
 {
 $this->load->view('main_index');
 }
 }
 
 结果出现之前所述错误,无法找到MY_Base类,论坛内有仁兄提到用用户文档中演示的MY_Controller扩展原始Controller类并用MY_Controller命名文件和新类名的时候可以正常显示,经过测试确实可以正常扩展并继承新类。但是换成其他名字都出错。
 
 随后我想到ci在搜索类的时候应当是首先根据名称搜索该名称的文件,进而搜索文件内的类,但是只有这样还是无法正常扩展。文档中提到用MY_Controller命名的文件内写入新类来扩展原来的Controller,‘MY_’是前缀,‘Controller’是被扩展的类名,然后文件内的类继承自Controller,然后本人只修改了文件内的类名而斗胆未按照ci中规定的控制器创建方法去用类名命名文件。
 
 然后就产生了一个这样的文件:
 
 文件名是:'MY_Controller.php',而文件内容是:
 
 <?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 class MY_Base extends Controller {
 
 function MY_Base()
 {
 parent::Controller();
 echo "base";
 }
 }
 
 ?>
 
 然后普通控制器继承自‘MY_Base’,结果终于没有了'Fatal error',并正确打印了扩展类中的“base”字符串,控制器视图也同样调用正常。
 
 既然到了这一步,索性把扩展类'MY_Base'中的前缀'MY_'去掉,只是 'Base extends Controller',结果大家应该能猜到,没有出错没有异常,正常输出......-_-!     (原来...是这样......~_~)
 
 如果不出意外,看到这里后大家应该清楚了如何正确的去扩展核心类了,如有不足请多多指正。
 
 
 最后罗嗦两句,config.php里面的子类前缀'MY_'的实际意义就只是跟文件相关了
 
 
 | 
 |