Пользовательские библиотеки в коде воспламенителя и конфигурационные файлы? - PullRequest
3 голосов
/ 24 мая 2011

У меня есть библиотека в коде воспламенителя, которая выглядит как class MyClass($options = array())

Файл Myclass.php

У меня есть файл (config/Myclass.php), который выглядит как

$Myclass = array(
  'something' => 'value',
  'another'   => 'value'
);

Что, я думал, должно передавать массив $Myclass при инициализации класса, но, очевидно, нет?

Что мне нужно сделать, чтобы это исправить?

Ответы [ 3 ]

2 голосов
/ 24 мая 2011

AH Я нашел ответ,

Массив внутри вашего файла конфигурации должен называться $config.

Имя файла также должно быть строчные буквы представление имени файла библиотеки.

например,

ФАЙЛ LIB: Somelibrary.php
СОДЕРЖАНИЕ LIB: class Somelibrary($options = array()){...
ФАЙЛ CONF: somelibrary.php
КОНФ СОДЕРЖАНИЕ: $config = array('something' => 'value');

1 голос
/ 24 мая 2011

Обычно это работает так: вы передаете массив опций, которые вы хотите переопределить, или ничего не передаете, чтобы использовать значения по умолчанию.в конфиге без уважительной причины;вместо этого просто поместите значения по умолчанию в определение класса, а затем переопределите в своем конструкторе:

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...
    }
}
0 голосов
/ 15 марта 2013

Перенесемся в 2013, у кого-то все еще есть проблемы с этим.Таким образом, моя ситуация была такой же, но немного другой, поэтому я решил попытаться спасти кого-нибудь еще.

  1. Я назвал свой конфигурационный файл после расширенного класса, это было неправильно, Файл конфигурации всегда должен иметь форму form_validation.php (это потому, что в конечном итоге он передается классу CI_Form_validation и именно этого он ожидает)

  2. Спасибо людямкто ответил на этот вопрос выше, я понял, что должен передать конфигурацию родительскому классу и, используя codeigniter v2.1.3, сделал это следующим образом:

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