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

调用类的错误

[复制链接]
发表于 2009-3-17 13:47:16 | 显示全部楼层 |阅读模式
PHP复制代码
class Test {
 
        var $parameter;      
        var $security_code;  
 
        function __construct($parameter,$security_code){
       $this->parameter=$parameter;
       $this->security_code=$security_code;
        }
        function show()
        {
                echo $this->parameter;
                echo '<br>'.$this->security_code;
        }
}
复制代码

控制器调用代码,如下:
PHP复制代码
function __construct()
        {
                parent::Controller();
                $this->load->library('test',array('aa','123'));
                echo $this->test->show();
        }
复制代码


结果产生如下错误:
PHP复制代码
A PHP Error was encountered
 
Severity: Warning
 
Message: Missing argument 2 for Test::__construct(), called in \Loader.php on line 927 and defined
 
Filename: libraries/test.php
 
Line Number: 8
复制代码
PHP复制代码
A PHP Error was encountered
 
Severity: Notice
 
Message: Undefined variable: security_code
 
Filename: libraries/test.php
 
Line Number: 10
复制代码


传的参数一个不少,出此问题不知道何原因?
发表于 2009-3-17 14:02:38 | 显示全部楼层
类库的构造函数只能接收一个数组变量作为参数,你传了两个参数当然不行,好好看看手册吧。
 楼主| 发表于 2009-3-17 14:11:30 | 显示全部楼层
ci代码都是传的数组参数,有没有办法,让构造函数接收多个参数,而不是一个数组?
发表于 2009-3-17 14:34:54 | 显示全部楼层
办法就是:扩展 loader 类,自己重写 load->library()
发表于 2009-3-17 16:00:58 | 显示全部楼层
1# sam
CI只接受一个数组作为参数,如果你传多个参数就直接在数组中传递,然后你的构造函数接受相应的key的元素就行。
可以这样改:
class Test {

        var $parameter;      
        var $security_code;  

        function __construct($args){
       $this->parameter=$args['parameter'];
       $this->security_code=$args['security_code'];
        }
        function show()
        {
                echo $this->parameter;
                echo '<br>'.$this->security_code;
        }
}



控制器调用代码,如下:
function __construct()
        {
                parent::Controller();
                $this->load->library('test',array('parameter'=>'aa','security_code'=>'123'));
                echo $this->test->show();
        }

本版积分规则