PHP / CodeIgniter-类构造中的未定义变量

时间:2012-09-06 23:15:55

标签: php class codeigniter object arguments

我有以下php错误:

  

遇到PHP错误

     

严重性:注意

     

消息:未定义的变量:t

  

遇到PHP错误

     

严重性:警告

     

消息:myclass :: __ construct()缺少参数1,调用   xxx在1011号线上   和定义

我的控制器包含:

    $this->load->model('mymodel');
    $i = $this->mymodel->func(1);
    print_r($i);

mymodel:

$test = new myclass("foo", "bar");
$myarray[] = $test;
return $myarray

myclass:

class myclass {

var $a;
var $b;

public function __construct($t, $l) // ERROR 2
{
    $this->a = $t; // ERROR 1
    $this->b = $l;
}

}

请注意,控制器中的print_r($ a)会打印带有内容的正确对象。

由于

2 个答案:

答案 0 :(得分:0)

好吧,那是由Codeigniter引起的。

myclass 在单独的文件中声明,并使用以下方式由 mymodel 加载:

    $CI =& get_instance();
    $CI->load->library('myclass', $params);

加载库时,Codeigniter会将 myclass 的实例创建为单例,但它不会传输任何参数。要防止此错误,您必须在加载lib之前提供参数:

    $params = array('type' => "a", 'loc' => "b");
    $CI =& get_instance();
    $CI->load->library('myclass', $params);

请注意,必须是一个数组($ params),而不是一个参数。

答案 1 :(得分:0)

另一种方法是模仿前爱answer

通过这种方式,您只需要更改模型文件和加载模型的方式即可。

P.S这只是为了丰富此SO线程