用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1850|回复: 5
收起左侧

[讨论/交流] 为什么扩展继承类可以这样写的?好像帮助文档的要求不...

[复制链接]
发表于 2016-2-27 00:57:02 | 显示全部楼层 |阅读模式

代码:
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

#前台父控制器
class Home_Controller extends CI_Controller{
    public function __construct(){
        parent::__construct();
        $this->load->switch_themes_on();
    }

}

#后台父控制器
class Admin_Controller extends CI_Controller{
        public function __construct(){
        parent::__construct();
        $this->load->switch_themes_off();

        #权限验证
        if (! $this->session->userdata('admin')){
            redirect('admin/privilege/login');
        }
    }
}

两个疑问:
在文件夹core/下该类文件名是MY_Controller.php,
按照帮助文档要求:
命名约定
  • 文件名首字母必须大写,例如:Myclass.php
  • 类名定义首字母必须大写,例如:class Myclass
  • 类名和文件名必须一致

请问为什么可以在一个文件里面定义两个继承类,而且类名和文件名还不一致的?请高手指点

QQ截图20160227004846.png
发表于 2016-2-27 13:57:35 | 显示全部楼层
Controller核心类扩展只是简单的判断文件是否存在(file_exists)并加载(require_once),所以可以命名不一致,当然也可以在其中创建多个类。对于“类名和文件名必须一致”这样约定更大程度是为了命名规范,而类似通过load加载的类是要通过class_exists检查的,否则会报错。

扩展Controller核心类的这种特性很大程度上提高了灵活性。但类的命名还是要设计一下的,方便今后的管理和修改,我的做法是核心扩展类加“SYS_”或"APP_"前缀。
发表于 2016-2-27 18:55:16 | 显示全部楼层
很明显,这是传智播客的教程
发表于 2016-3-8 12:13:40 | 显示全部楼层
MY  都可以设置     这个不是关键   关键是在core  目录下面MY_model    不能像 MY_controller 一样里面进行定义2 个活着更多的model  基类  但是 MY_controller  确实可以   不知道是为什么????
发表于 2016-3-17 11:55:51 | 显示全部楼层
教程地址有吗?是最新的
发表于 2016-5-11 15:53:07 | 显示全部楼层
我也是新手   加个好友  一起学习。互相研究着还好玩点把

本版积分规则