Застрял в Уведомление: неопределенная переменная: c
У меня есть этот файл index.php
# Loading configurations.
loadConfiguration('database');
loadConfiguration('site');
# Initializing the database connection.
$db = new database($c['db']['host'], $c['db']['username'], $c['db']['password'], $c['db']['name']);
unset($c['db']['password']);
И loadConfiguration() устанавливается следующим образом:
function loadConfiguration($string) { require(path.'config/'.$string.'.con.php'); }
Я проверил, что database.con.php и site.con.php находятся в папке config/. И единственная ошибка, которую я получаю - это Notice: Undefined variable: c в следующей строке
$db = new database($c['db']['host'], $c['db']['username'], $c['db']['password'], $c['db']['name']);
Вот база данных.con.php
# Ignore.
if (!defined('APP_ON')) { die('Feel the rain...'); }
$c['db']['host'] = 'localhost';
$c['db']['username'] = 'root';
$c['db']['password'] = '';
$c['db']['name'] = 'name';
Вот сайт.con.php
# Ignore.
if (!defined('APP_ON')) { die('Feel the rain...'); }
/* Site informations */
$c['site']['name'] = 'Namek';
$c['site']['mail'] = 'mail@whocares.com';
$c['site']['enable-email'] = false;
$c['site']['debug-mode'] = true;
Что я делаю неправильно?
2 ответа
require
D код выполняется внутри функции, так $c
является локальной переменной и не доступна в глобальной области видимости.
Вы можете использовать шаблон дизайна $c
глобальный (например, использовать реестр (R::$c
, R::get('c')
, окружающая среда ($this->env->c
),...) или вы можете изменить функцию загрузчика конфигурации, чтобы она возвращала имя файла и require
вне этого:
require_once configFile('database');
function configFile($name) {
return path . 'config/' . $name . '.con.php';
}
Пожалуйста, не используйте глобальную переменную в соответствии с целью безопасности. Вы можете установить свою переменную в переменной реестра, а затем получить к ней доступ.