CI 2.1.3如何继承自定义类呢?
本帖最后由 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. 那该怎么办呢?
本人技术不咋样, 只好来个简单, 直接, 粗暴的办法解决,
首先在入口文件里最开头里写上
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写的项目就好维护了. dickfu 发表于 2013-4-17 10:42
把 homeController 和 adminController都定义在 core/MY_Controller.php
这种继承只适合一两个自定类,并且不好管理。
楼主这种目录自动化继承很好,如果继续优化的话。
都在说ci好,我感觉就是一个字"乱"。不得已才用而已。
我感觉好的自动继承是
app目录下自动查找,
比如:
class abc extends user_base {
}
目录结构是
applicattion/user/base.class.php
//
class user_base extends base{
}
这样目录功能一目了然,对ide也友好。项目大时方便维护,升级不会影响。
如果自定义类都写在core里面,升级框架,初始化框架时还需要查看core里面哪些是框架类,哪些是自定义类。
在线手册用的是google搜索对国内用户一点都不友好。
okool 发表于 2014-11-7 10:58
这种继承只适合一两个自定类,并且不好管理。
楼主这种目录自动化继承很好,如果继续优化的话。
这种思路有点命名空间的意思了!
前段时间看点thinkphp,里面用命名空间不错!
不知道ci什么时候会支持。
okool 发表于 2014-11-7 10:58
这种继承只适合一两个自定类,并且不好管理。
楼主这种目录自动化继承很好,如果继续优化的话。
哈哈,我来歪下楼,不用 google 用什么呢?百度就算了,搜技术类东西太差了。。。
本帖最后由 dickfu 于 2013-4-17 10:44 编辑
把 homeController 和 adminController都定义在 core/MY_Controller.php里就行了呗 楼上正解,前后台的控制器都写在MY_Controller.php,就可以分别继承了
请参考STBLOG的写法 dickfu 发表于 2013-4-17 10:42 static/image/common/back.gif
把 homeController 和 adminController都定义在 core/MY_Controller.php
哎, 发帖就是有好处啊. 居然还有这么好的解决方案, 手册真不可靠了啊. hadi 发表于 2013-4-17 14:28 static/image/common/back.gif
楼上正解,前后台的控制器都写在MY_Controller.php,就可以分别继承了
请参考STBLOG的写法 ...
这个blog系统不错啊... 學習中
先拜讀了 吱吱吱吱吱吱 dickfu 发表于 2013-4-17 10:42
把 homeController 和 adminController都定义在 core/MY_Controller.php
2楼的正解
页:
[1]
2