huasun 发表于 2016-2-27 00:57:02

为什么扩展继承类可以这样写的?好像帮助文档的要求不...


代码:
<?phpif ( ! 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
[*]类名和文件名必须一致

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

pcjingl 发表于 2016-2-27 13:57:35

Controller核心类扩展只是简单的判断文件是否存在(file_exists)并加载(require_once),所以可以命名不一致,当然也可以在其中创建多个类。对于“类名和文件名必须一致”这样约定更大程度是为了命名规范,而类似通过load加载的类是要通过class_exists检查的,否则会报错。

扩展Controller核心类的这种特性很大程度上提高了灵活性。但类的命名还是要设计一下的,方便今后的管理和修改,我的做法是核心扩展类加“SYS_”或"APP_"前缀。

v阿杰 发表于 2016-2-27 18:55:16

很明显,这是传智播客的教程

fandy 发表于 2016-3-8 12:13:40

MY都可以设置   这个不是关键   关键是在core目录下面MY_model    不能像 MY_controller 一样里面进行定义2 个活着更多的model基类但是 MY_controller确实可以   不知道是为什么????

james321 发表于 2016-3-17 11:55:51

教程地址有吗?是最新的

南瞭瞭 发表于 2016-5-11 15:53:07

我也是新手   加个好友一起学习。互相研究着还好玩点把
页: [1]
查看完整版本: 为什么扩展继承类可以这样写的?好像帮助文档的要求不...