在Codeigniter中初始化库时传递参数

时间:2012-10-18 11:09:18

标签: codeigniter

我对Codeigniter很陌生,只是从头学习。在CI文档中,它说:

$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
    }
}

您能举例说明如何使用数组作为参数将数据从控制器传递到外部库吗?我想看一个简单的例子。

2 个答案:

答案 0 :(得分:7)

所有Codeigniter“库”构造函​​数都需要一个参数:一个参数数组,通常在使用CI的加载器加载类时传递,如下例所示:

$params = array('type' => 'large', 'color' => 'red');
$this->load->library('Someclass', $params);

我猜你对“用$ params做某事”这一部分感到困惑。没有必要传递任何参数,但如果你这样做,你可以像这样使用它们:

class Someclass {
    public $color = 'blue'; //default color
    public $size = 'small'; //default size
    public function __construct($params)
    {
        foreach ($params as $property => $value)
        {
            $this->$property = $value;
        }
        // Size is now "large", color is "red"
    }
}

如果需要,您可以随后重新初始化,如果您需要:

$this->load->library('Someclass');
$this->Someclass->__construct($params);

另一件需要注意的事情是,如果您的配置文件与您的类名相匹配,那么该配置将自动加载。例如,如果您有文件application/config/someclass.php

$config['size'] = 'medium';
$config['color'] = 'green';
// etc.

这个配置在加载时会自动传递给“someclass”的类构造函数。

答案 1 :(得分:1)

在libraries目录中创建一个文件Someclass_lib.php

这是您的图书馆代码

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

class Someclass_lib
{
    public  $type       =   '';
    public  $color      =   '';

    function Someclass_lib($params)
    {
        $this->CI   =&  get_instance();
        $this->type =   $params['type'];
        $this->color    =   $params['color'];
    }
}

如果要加载库

,请使用此代码
$params = array('type' => 'large', 'color' => 'red'); 
$this->load->library('Someclass_lib', $params);