конфигурация — неопределенная переменная конфиг?

Итак, у меня есть файл конфигурации, config_inc.php:

<?php
static $config = Array();
$config['dbHost'] = 'localhost';
$config['dbPass'] = '';
$config['dbUser'] = 'root';
$config['dbName'] = 'recipes_comments';
?>

И тогда у меня есть контроллер, который должен загружать эти переменные с помощью require_once:

require_once "config_inc.php";
class Controller {
public function regUser() {
echo $config['dbHost'];
}
}

Я пытался найти сообщения с похожими ошибками, но не смог найти решение, которое исправляет это.

Когда я пытаюсь отобразить переменную, определенную в config_inc.php, как показано выше, я получаю сообщение об ошибке, что config не определена.

Мой вопрос: почему конфиг не определен в контроллере и как это правильно сделать?

-1

Решение

config не определен в Controller, потому что он не глобален.

Плохой путь
Вы должны сначала заменить static от global в вашем конфигурационном файле, затем добавьте global $config в начале вашей функции.

Правильный путь
Не используйте глобальный в php. Вместо этого передайте свой $config массив в конструкторе вашего класса, или добавить его другим способом. Например

require_once "config_inc.php";

class Controller {
private $config;
public function regUser() {
echo $this->config['dbHost'];
}
public function __construct($config)
{
$this->config = $config;
}
}

$controller = new Controller($config);
$controller->regUser();
1

Другие решения

Это проблема сферы. Вы пытаетесь получить доступ к переменной, которую ваш класс не может видеть из своей области видимости.

$ config — это глобальная переменная в вашем коде. Это означает, что он существует в глобальном масштабе.

попробуй это:

require_once "config_inc.php";
class Controller {
public function regUser() {
echo $GLOBALS['$config']['dbHost'];
}
}
-2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector