我在代码点火器中有一个类似于class MyClass($options = array())
该文件为Myclass.php
我有一个类似
的文件(config/Myclass.php
)
$Myclass = array(
'something' => 'value',
'another' => 'value'
);
我认为应该在初始化课程时传递$Myclass
数组,但显然不是?
我需要做些什么来解决它?
答案 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年,有人仍然遇到这个问题。所以我的情况是一样的,但略有不同,所以我想我会试着挽救别人一段时间。
我在扩展课程后命名我的配置文件,这是错误的。 Config文件应始终为form_validation.php ,(这是因为最终将它传递给CI_Form_validation类,这就是它所期望的)
感谢上面回答这个问题的人,我意识到我必须将配置传递给父类并使用codeigniter v2.1.3我按照以下方式执行:
public function __construct( $config = array() )
{
parent::__construct($config);
}