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

[初级] CI 2.1.3如何继承自定义类呢?

[复制链接]
发表于 2013-4-17 03:10:36 | 显示全部楼层 |阅读模式
本帖最后由 lamp_小范 于 2013-4-17 03:35 编辑

    之所以选择CI, 就因为它文档酷, 特别有人性化, 让我在几分钟之内就入门了, 不像国内某些框架, 看半天都不知道如何使.叽里呱啦一大堆. 要是手册像CI那么讲, 我保证我肯定会"背叛"CI, 哈哈, 不过那不可能了, 因为已经被CI套牢了.

    CI有点不好的就是做出来的项目一点都不好维护, 比如用netbeans IDE, 想要把某个类的某个方法重命名, 凡是用了这个方法的都要跟着重命名, 但是不行, 只有在手动new的情况下, netbeans才能知道.

    好, 回到正题, 以下出现的目录名字是默认的情况下, CI的手册里里有说自定义继承的, 比如:Author exntends My_User, 那么得在application/core目录下里建立My_User.php文件,

    但是, 要是项目分为前台后后,比如前台的user 想继承 homeController, 后台的user想继承adminController. 那该怎么办呢?
    本人技术不咋样, 只好来个简单, 直接, 粗暴的办法解决,
    首先在入口文件里最开头里写上
PHP复制代码
 
function __autoload($class) {
    if (strpos($class, 'CI_') !== 0) {
        @include_once( APPPATH . 'common/' . $class . EXT );
    }
}
 
复制代码

可以看到"common"的字样, 那是application/common目录, 自己建立, 可以取别的名字, 然后在common里建立adminController.php和homeController.php, 那么前台的user就可以继承了... 下面就不说了.... 已经够简单, 够粗暴了.

    CI要是什么时候完全抛弃php4的支持就好了, 估计到时候用CI写的项目就好维护了.
发表于 2014-11-7 10:58:08 | 显示全部楼层
dickfu 发表于 2013-4-17 10:42
把 homeController 和 adminController都定义在 core/MY_Controller.php[/backcol ...

这种继承只适合一两个自定类,并且不好管理。

楼主这种目录自动化继承很好,如果继续优化的话。

都在说ci好,我感觉就是一个字"乱"。不得已才用而已。

我感觉好的自动继承是

app目录下自动查找,
比如:
class abc extends user_base {

}
目录结构是
applicattion/user/base.class.php

//
class user_base extends base{

}

这样目录功能一目了然,对ide也友好。项目大时方便维护,升级不会影响。
如果自定义类都写在core里面,升级框架,初始化框架时还需要查看core里面哪些是框架类,哪些是自定义类。

在线手册用的是google搜索对国内用户一点都不友好。


发表于 2014-12-25 12:12:13 | 显示全部楼层
okool 发表于 2014-11-7 10:58
这种继承只适合一两个自定类,并且不好管理。

楼主这种目录自动化继承很好,如果继续优化的话。

这种思路有点命名空间的意思了!
前段时间看点thinkphp,里面用命名空间不错!
不知道ci什么时候会支持。


发表于 2014-11-7 16:26:41 | 显示全部楼层
okool 发表于 2014-11-7 10:58
这种继承只适合一两个自定类,并且不好管理。

楼主这种目录自动化继承很好,如果继续优化的话。

哈哈,我来歪下楼,不用 google 用什么呢?百度就算了,搜技术类东西太差了。。。

发表于 2013-4-17 10:42:35 | 显示全部楼层
本帖最后由 dickfu 于 2013-4-17 10:44 编辑

homeController adminController都定义在 core/MY_Controller.php里就行了呗
发表于 2013-4-17 14:28:53 | 显示全部楼层
楼上正解,前后台的控制器都写在MY_Controller.php,就可以分别继承了
请参考STBLOG的写法
 楼主| 发表于 2013-4-18 02:58:24 | 显示全部楼层
dickfu 发表于 2013-4-17 10:42
把 homeController 和 adminController都定义在 core/MY_Controller.php[/backcol ...

哎, 发帖就是有好处啊. 居然还有这么好的解决方案, 手册真不可靠了啊.
 楼主| 发表于 2013-4-18 02:58:49 | 显示全部楼层
hadi 发表于 2013-4-17 14:28
楼上正解,前后台的控制器都写在MY_Controller.php,就可以分别继承了
请参考STBLOG的写法 ...

这个blog系统不错啊...
发表于 2013-5-4 11:56:56 | 显示全部楼层
學習中
先拜讀了
发表于 2014-7-16 09:44:17 | 显示全部楼层
吱吱吱吱吱吱
发表于 2014-8-8 17:19:27 | 显示全部楼层
dickfu 发表于 2013-4-17 10:42
把 homeController 和 adminController都定义在 core/MY_Controller.php[/backcol ...

2楼的正解

本版积分规则