我有以下php错误:
遇到PHP错误
严重性:通知
消息:未定义变量:t
和
遇到PHP错误
严重性:警告
消息:myclass::__construct()缺少参数1,在中调用1011线上的xxx并定义
我的控制器包含:
$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)会打印正确的带有内容的对象。。
感谢
Allright,这是由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),而不是单个参数。
另一种方法是复制cat antelove答案。
这样,您只需要更改模型文件和加载模型的方式。
p.S这只是为了丰富这个SO线程