nase 发表于 2009-6-23 18:42:47

举例说明如何继承控制器

(为避免其他人重走弯路,写了个简短教程。)

功能:
继承控制器。

实例:
1、创建system\application\libraries\MY_Controller.php 文件,在文件中这样定义继承控制器:
class BaseController extends Controller {...

2、创建system\application\controllers\blog.php 文件,调用基本控制器:
class Blog extends BaseController{...

备注:
MY_是文件名,不是类名。

fzbk 发表于 2009-6-24 13:54:46

对有助于重用代码

Midnight 发表于 2009-6-28 01:26:40

没效果:L

ewayfly 发表于 2009-6-28 10:28:45

CI加载基本类库的顺序是先用户扩展或自定义的类,然后才是系统类。
要慎重哦。

nase 发表于 2009-7-23 09:20:33

没有效果应该是构造函数没有继承基类。

        class Blog extends BaseController
        {
                function Blog()
                {
                        parent::BaseController();// 注意这里。
                        ...........
                }
                .........
      }

avinmo 发表于 2009-7-23 14:04:22

... 不太提倡改动system里的东西。。。 如真有需要,那也要在项目里作出说明文件。
免得CI升级的时候。。SYSTEM覆盖了现有的改动。。。 而且。每次升级。都必须去修改回来。很是麻烦。

nase 发表于 2009-7-24 09:17:27

没有改动system里的任何代码。

为什么要扩展(继承)控制器呢?代码重用。

比如,每个页面需要验证用户是否登录,你就可以很方便地将验证的代码写在BaseController类里面,这样可以避免将验证的代码写在每个控制页面。还有,如果各个页面具有某些相同的部分,也可以写到BaseController类里面,即保持页面的短小,又方便将来的维护,其中的好处很多。

zhitianjiao 发表于 2010-11-25 01:28:51

问题是这个 “libraries\MY_Controller.php ” 是有缺陷的,

不能导入模型:在MY_Controller.php内使用 $this->load->model('article_model');会出错。


所以这个控制器不同于app/controllers/目录下的控制器。

wxlreg 发表于 2013-3-27 11:45:47

我放libraries下面没成功,放core下面成功了。。。。:o

Hex 发表于 2013-3-27 12:05:31

wxlreg 发表于 2013-3-27 11:45 static/image/common/back.gif
我放libraries下面没成功,放core下面成功了。。。。

这个教程比较老了,请参考手册。
页: [1]
查看完整版本: 举例说明如何继承控制器