加载自定义CodeIgniter库时传递参数

时间:2010-08-13 21:00:08

标签: php codeigniter arguments class-library

我正在尝试实现一个我编写为CodeIgniter库的类。

我不知道CI的load()方法将多个参数传递给类的构造函数。

我的类旨在获得3个参数,2个数组和一个可选字符串。

构造函数看起来像这样:

public function __construct($array, $array,$string=""){
/** code **/
}

控制器的相关部分:

function index(){
  $array1 = array('key1'=>'value','key2'=>'value');
  $array2 = array('key1'=>'value','key2'=>'value');
  $string = "value";
  $params = array($array1,$array2,$string);
  $this->load->library("MyClass",$params);
}

加载控制器会生成此错误:

Message: Missing argument 2 for MyClass::__construct()

这真让我感到困惑。似乎第一个参数被发送正常,然后它在第二个参数上窒息。任何关于为什么会发生这种情况的线索将不胜感激。

3 个答案:

答案 0 :(得分:17)

您需要修改类构造函数以处理传递的数据,如下所述:

https://www.codeigniter.com/user_guide/general/creating_libraries.html

public function __construct($params)
{
    $array1 = $params[0];
    $array2 = $params[1];
    $string = $params[2];

    // Rest of the code
}

答案 1 :(得分:0)

在声明params时忘记了$ on array2,导致它作为未定义的常量而不是数组传递。

答案 2 :(得分:0)

初始化班级时传递参数

在库加载函数中,您可以通过第二个参数动态地将数据作为数组传递,它将传递给您的类构造函数:

$params = array('type' => 'large', 'color' => 'red');

$ this-> load-> library('Someclass',$ params); 如果使用此功能,则必须设置类构造函数以期望数据:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Someclass {

    public function __construct($params)
    {
        // Do something with $params
    }
}

?>