Застрял в Уведомление: неопределенная переменная: c - PullRequest
0 голосов
/ 18 января 2011

У меня есть этот файл 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 /. И единственная ошибка, которую я получаю, это Примечание: неопределенная переменная: 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 ]

0 голосов
/ 18 января 2011

Пожалуйста, не используйте глобальную переменную в целях безопасности.Вы можете установить свою переменную в переменной реестра, а затем получить к ней доступ.

0 голосов
/ 18 января 2011

Код 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';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...