代码点火器和配置文件中的自定义库?

时间:2011-05-23 21:07:29

标签: php codeigniter configuration-files libraries

我在代码点火器中有一个类似于class MyClass($options = array())

的库

该文件为Myclass.php

我有一个类似

的文件(config/Myclass.php
$Myclass = array(
  'something' => 'value',
  'another'   => 'value'
);

我认为应该在初始化课程时传递$Myclass数组,但显然不是?

我需要做些什么来解决它?

3 个答案:

答案 0 :(得分:2)

AH我找到了答案,

配置文件中的数组必须称为$config

文件名也必须是库文件名的小写表示。

e.g

LIB文件:Somelibrary.php
LIB目录:class Somelibrary($options = array()){...
CONF FILE:somelibrary.php
CONF CONTENTS:$config = array('something' => 'value');

答案 1 :(得分:1)

这通常的工作方式是传入一个你想要覆盖的选项数组,或者不传递任何东西来使用默认值。

var myObject = new MyClass(); // default settings

var myObject = new MyClass(array('something' => 'value2')); // override only "something"

老实说,我不会在没有充分理由的情况下在配置中创建自己的文件;相反,只需将默认值放在类定义中,然后在构造函数中覆盖:

class MyClass {

    var $default_options = array(
        'something' => 'value',
        'another' => 'value',
    );
    var $options = array();

    function MyClass($override_options = array())
    {
        $this->options = array_merge($this->default_options, $override_options);

        // your code here...
    }
}

答案 2 :(得分:0)

快进到2013年,有人仍然遇到这个问题。所以我的情况是一样的,但略有不同,所以我想我会试着挽救别人一段时间。

  1. 我在扩展课程后命名我的配置文件,这是错误的。 Config文件应始终为form_validation.php ,(这是因为最终将它传递给CI_Form_validation类,这就是它所期望的)

  2. 感谢上面回答这个问题的人,我意识到我必须将配置传递给父类并使用codeigniter v2.1.3我按照以下方式执行:

    public function __construct( $config = array() )
    {
      parent::__construct($config);
    }