Я пытаюсь изменить свой 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
если не в контексте объекта.