4

我对 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
    }
}

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

4

2 回答 2

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”的类构造函数。

于 2012-10-18T11:18:45.040 回答
1

在库目录中创建一个文件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);
于 2012-10-18T11:18:04.680 回答