拓展核心
有时候,我们需要有自己的祖先控制器或者祖先模型,在祖先控制器或祖先模型里面定制一些自己的逻辑。
那么我们只需要两步即可实现这个:
1. 编写自己的祖先控制器或者祖先模型,比如祖先控制器:MyController.class.php,然后把MyController.class.php放到library里面。
MyController.class.php内容如下:
<?php
class MyController extends MpController{
    protected $someVar;
    public function __construct() {
        parent::__construct();
        //do your something here...
    }
    public function someMethod() {
         
    }
}
2. 在我们写控制器的时候,可以直接继承自己的祖先控制器,比如控制器:home.php
home.php内容如下:
<?php
class Home extends MyController{
    public function doTest() {
        $this->someMethod();
    }
}
使用自己的祖先模型和控制器步骤一样,只是祖先模型继承的是MpModel,模型继承的是祖先模型。
提醒:可以有多个不同祖先控制器或祖先模型,比如我们后台使用AdminController,前台使用FrontController
这样前台的控制器都继承FrontController,后台的控制器都继承AdminController即可。
自定义Loader
自定义Loader,用于拓展框架核心功能,Loader是控制器MpController和模型MpModel都继承的一个类,大部分核心功能都在loader中完成。
自定义Loader的系统配置是:
$system['my_loader'] = '';
这里是自定义Loader类文件的完整路径,自定义Loader文件名称和类名称必须是:类名.class.php。
比如:$system['my_loader'] = $system['library_folder'].'/MyLoader.class.php';
MyLoader.class.php文件里面的Loader类名就是MyLoader。
注意:
   1.自定义Loader必须继承MpLoader。
   2.一个最简单的Loader示意:(假设文件名称是:MyLoader.class.php)
   <?php
   class MyLoader extends MpLoader {
        public function __construct() {
            parent::__construct();
            
        }
    } 
   3.如果无需自定义Loader,留空即可。
   4.在parent::__construct()之前,helper,model,library自动加载已经完成。
   5.parent::__construct()会初始化:
        1.注册错误处理
        2.$this->router 路由信息数
        3.$this->input  input输入类实例
        4.$this->model  模型自动加载类实例
        5.$this->lib    类库自动加载类实例
        6.$this->rule   表单验规则生成类实例
        7.$this->db     如果配置了自动加载数据库,$this->db会被初始化,反之不初始化
        8.$this->cache  缓存类实例
   6.在Loader中:
     $this->lib()
     $this->model()
     $this->helper()
     $this->ajax_echo()
     $this->config()
     $this->database()
     $this->message()
     $this->page()
     $this->readData()
     $this->checkData()
     $this->redirect()
     $this->setCookie()
     $this->view()
     $this->view_path()
     $this->xml_echo()
     $this->view_vars
     均可以使用。
   7.自定义Loader在框架核心文件被包含时生效,此后修改$system['my_loader']无效。