有时候,我们需要有自己的祖先控制器或者祖先模型,在祖先控制器或祖先模型里面定制一些自己的逻辑。 那么我们只需要两步即可实现这个: 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']无效。
Powered By 狂奔的蜗牛 | 历史版本 | 源代码 | 快速入门 | MicroPHP@开源中国
源代码许可证 Apache License v2.0
MicroPHP官方QQ交流群 : 42807575 , 有问题欢迎加群交流