0

Я обновляю свой Codeigniter с 2.2.1 до 3.0.0. Множество вещей было изменено espacially сессий.Override get_config (Codeigniter)

CI 2.2.1 и до этого эту функцию следовать в системе/ядро ​​/ common.php: Линия около 214.

function &get_config($replace = array()) 
    { 
     static $_config; 

     if (isset($_config)) 
    { 
     return $_config[0]; 
    } 

Это функция, которая расширяет систему/ядро ​​/ Input.php

приложение/ядро ​​/ MY_Input.php

Class MY_Input extends CI_Input 
    { 

    function _clean_input_keys($str, $fatal = true) 
    { 

    $config = &get_config('config'); 

    if (! preg_match("/^[".$config['permitted_uri_chars']."]+$/i", 
     rawurlencode($str))) 
    { 
     exit('Disallowed Key Characters.'); 
    } 

    // Clean UTF-8 if supported 
    if (UTF8_ENABLED === TRUE) 
    { 
     $str = $this->uni->clean_string($str); 
    } 


    return $str; 
    } 

    } 

пока здесь все работало нормально. После обновления до CI # системы/ядра/common.php изменил функцию: Линия около 238

function &get_config(Array $replace = array()) 
     { 
     static $config; 

     if (empty($config)) 
     { 

Как я мог соответствовать параметрам для этой функции в MY_Input.php

$config = &get_config('config'); 
+0

вы предоставляете строку в то время как вы упомянули в функции, аргумент должен быть массивом. поэтому он дает вам ошибку. – john

+0

@john Он отлично работал для CI 2.2.1. Почему не для CI 3? – Rocks

+0

Я не знаю о CI, но я знаю, что если вы укажете тип аргумента в определении функции, тогда тип аргумента должен быть таким же в вызове функции. – john

ответ

1

слово «Массив», прежде чем $ заменить в коде v3 навязывает тип аргумента, то есть причина, вы получаете сообщение об ошибке.

«config» не является допустимым значением для этого аргумента. Удалите его, и вам должно быть хорошо идти.

$config = &get_config('config'); 

в

$config = &get_config(''); 
0

попробовать как это

$config=array('db'=>'some value','someother'=>'value'); 
$config = &get_config($config); **// LINE 6**