CodeIgniter; $ это использование в не-объектном контексте

Я пытаюсь изменить свой config/database.php в моем проекте CodeIgniter, так что мне не нужно постоянно менять информацию о базе данных каждый раз, когда я нажимаю новую версию на сервер. Чтобы сделать последнее, я создал переменную $debug , показанную ниже, которая проверяет uri, чтобы проверить, выполняется ли сайт на моей машине localhost (где я создаю проект перед загрузкой) или на самом сервере.

К сожалению, в файле database.php у меня нет доступа к переменной $this , и поскольку я лично новичок в ООП в PHP, я не совсем уверен в этом. Пожалуйста, скажите, как я могу это сделать?

Благодаря,

Максимум.

Неустранимая ошибка: использование $ this, если не в контексте объекта в приложении / config / database.php в строке 51

 $debug = strpos($this->uri->config->item('base_url'), 'localhost'); //line 51 $db['default']['hostname'] = $debug == TRUE ? 'x' : 'y'; $db['default']['username'] = $debug == TRUE ? 'x' : 'y'; $db['default']['password'] = $debug == TRUE ? 'x' : 'y'; $db['default']['database'] = $debug == TRUE ? 'x' : 'y'; 

Вам нужно получить экземпляр объекта codeigniter –

 $CI = get_instance(); 

Для более старых версий php используйте = &

Затем используйте $CI где бы вы обычно не использовали $this

Вам нужно использовать get_instance() чтобы получить $this переменную $this .

 $ci = get_instance(); // $ci replaces $this echo $ci->config->item('base_url'); 

$this This variable – специальная переменная, используемая в объектно-ориентированном коде, когда у вас есть классы – см. Php.net для некоторого фонового чтения на нем.

$this только для объектов, вы не можете использовать его вне объекта. Я считаю, что лучший способ сделать это – исключить файл database.php при развертывании. В IDE, который вы используете, должна быть предусмотрена возможность исключения файла из развертывания.

На этот вопрос есть простой ответ.

Раздел «Чтение среды» по адресу: http://codeigniter.com/user_guide/libraries/config.html

в основном создавать две папки application / config / production и application / config / development

и поместите одну копию вашего файла database.php в каждую папку.

Вы также можете использовать $_SERVER['SERVER_NAME'] и сравнить его с именами серверов (localhost или remote). В CI есть функция, которая проверяет ее:

 $this->input-> server('SERVER_NAME') 

Как указано выше, вы должны изменить this если не в контексте объекта.