举例说明如何继承控制器
(为避免其他人重走弯路,写了个简短教程。)功能:
继承控制器。
实例:
1、创建system\application\libraries\MY_Controller.php 文件,在文件中这样定义继承控制器:
class BaseController extends Controller {...
2、创建system\application\controllers\blog.php 文件,调用基本控制器:
class Blog extends BaseController{...
备注:
MY_是文件名,不是类名。 对有助于重用代码 没效果:L CI加载基本类库的顺序是先用户扩展或自定义的类,然后才是系统类。
要慎重哦。 没有效果应该是构造函数没有继承基类。
class Blog extends BaseController
{
function Blog()
{
parent::BaseController();// 注意这里。
...........
}
.........
} ... 不太提倡改动system里的东西。。。 如真有需要,那也要在项目里作出说明文件。
免得CI升级的时候。。SYSTEM覆盖了现有的改动。。。 而且。每次升级。都必须去修改回来。很是麻烦。 没有改动system里的任何代码。
为什么要扩展(继承)控制器呢?代码重用。
比如,每个页面需要验证用户是否登录,你就可以很方便地将验证的代码写在BaseController类里面,这样可以避免将验证的代码写在每个控制页面。还有,如果各个页面具有某些相同的部分,也可以写到BaseController类里面,即保持页面的短小,又方便将来的维护,其中的好处很多。 问题是这个 “libraries\MY_Controller.php ” 是有缺陷的,
不能导入模型:在MY_Controller.php内使用 $this->load->model('article_model');会出错。
所以这个控制器不同于app/controllers/目录下的控制器。 我放libraries下面没成功,放core下面成功了。。。。:o wxlreg 发表于 2013-3-27 11:45 static/image/common/back.gif
我放libraries下面没成功,放core下面成功了。。。。
这个教程比较老了,请参考手册。
页:
[1]