Я пытаюсь реализовать класс, который я записал как библиотека CodeIgniter.
Так или иначе я не могу получить CI load()
метод для передачи нескольких аргументов функции конструктора класса.
Мой класс разработан для получения 3 аргументов, 2 массивов и одной дополнительной строки.
Конструктор несколько походит на это:
public function __construct($array, $array,$string=""){
/** code **/
}
Соответствующая часть от контроллера:
function index(){
$array1 = array('key1'=>'value','key2'=>'value');
$array2 = array('key1'=>'value','key2'=>'value');
$string = "value";
$params = array($array1,$array2,$string);
$this->load->library("MyClass",$params);
}
Загрузка контроллера генерирует эту ошибку:
Message: Missing argument 2 for MyClass::__construct()
Это является действительно озадачивающим меня. Кажется, что первый аргумент получает отправленный штраф, и затем это дросселирует на втором аргументе. Любые подсказки о том, почему это происходит, будут значительно цениться.
Вам необходимо изменить конструктор класса для обработки переданных данных, как описано здесь:
https://www.codeigniter.com/user_guide/general/creating_libraries.html
public function __construct($params)
{
$array1 = $params[0];
$array2 = $params[1];
$string = $params[2];
// Rest of the code
}
вы забыли $ on array2 при объявлении параметров, в результате чего он передается как не определенная константа вместо массива.