sunsongxp 发表于 2009-5-29 16:59:36

这是什么原因啊?

本帖最后由 sunsongxp 于 2009-5-29 17:01 编辑

我自己写了个Helper:load_data_helper.php
,内容如下

$CI =&get_instance();
function hp_load_view_data()
{
global $CI;
$data = array('agreements');
$data['website_name'] = $CI->lang->line('website_name');
$data['copyright'] = $CI->lang->line('copyright');
return $data;
}

这个代码本身没有问题,但是不能够在类的构造函数中引用,比如
class main extends Controller {
var $viewdata;
function main()
{
parent::Controller();
$this->viewdata = hp_load_view_data();
}

function index()
{

}
}
这样就会报错
Fatal error: Call to a member function line() on a non-object inC:\PHP\DedeAMPZ\WebRoot\Default\CodeIgniter_1.7.0\system\application\helpers\load_data_helper.php
on line
10

但是如果把“$this->viewdata = hp_load_view_data();
”放到index()中,就正常了……
不知道什么原因,有谁能解释下

visvoy 发表于 2009-5-29 17:49:11

不能在构造函数中外部引用即将构造的object,此时object不存在

sunsongxp 发表于 2009-5-30 12:06:40

哦,原来如此,这是PHP的面向对象的特点吗

Hex 发表于 2009-5-31 10:43:23

什么语言的对象都要在存在以后才能引用,这个和 PHP 关系不大。

yuwen002 发表于 2009-5-31 17:22:10

new 出来后,才有东西嘛
页: [1]
查看完整版本: 这是什么原因啊?