sam 发表于 2009-3-17 13:47:16

调用类的错误

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

结果产生如下错误:
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
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: security_code

Filename: libraries/test.php

Line Number: 10

传的参数一个不少,出此问题不知道何原因?

Hex 发表于 2009-3-17 14:02:38

类库的构造函数只能接收一个数组变量作为参数,你传了两个参数当然不行,好好看看手册吧。

sam 发表于 2009-3-17 14:11:30

ci代码都是传的数组参数,有没有办法,让构造函数接收多个参数,而不是一个数组?

Hex 发表于 2009-3-17 14:34:54

办法就是:扩展 loader 类,自己重写 load->library()

neversaylate 发表于 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();
      }
页: [1]
查看完整版本: 调用类的错误