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

[HELP] 控制器中的index.php

[复制链接]
发表于 2012-7-7 23:11:15 | 显示全部楼层 |阅读模式
我在控制器中写了一个index,内容如下:
class Index extends CI_Controller {

public function index()
{
  $this->load->view('index');
}
}

可为啥会报这样的错:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Index:load
Filename: controllers/index.php
Line Number: 22
发表于 2012-7-8 09:58:51 | 显示全部楼层
缺少构造函数,注意看手册
发表于 2012-12-11 00:12:17 | 显示全部楼层
因为 类名称是index 而方法又是index,这样index函数就是php4中的构造函数,即实例化类时,直接执行这个函数而没有执行父类的构造函数,也就没有初始化CI核心类。所以会提示没有定义属性或方法了。

用index类名也可以,在

public function index() 方法前加上,调用父类的构造方法

public function __construct()
{
  parent::__construct();
}

这个原理是:当类中同时存在php4和php5的构造函数时,只执行php5 的 __construct();。

当在index方法中加上 parent::__construct()又会出现什么呢?
function index()
{
parent::__construct();
$this->load->view('.......');
}

重复执行了两次 index方法。第一次php4的构造函数,第二次CI的index方法。

大家可以试试!

本版积分规则