Ну, вы можете использовать переменную $GLOBALS, которая также содержит другие суперглобальные переменные, такие как $_GET, $_POST и т. д. Конечно, это означает, что вы все равно всегда должны включать файл, в котором вы определяете свою собственную пользовательскую переменную.
Хорошая вещь при использовании $GLOBALS заключается в том, что вы можете использовать его во всех областях, и, по крайней мере, имхо, вы можете использовать его как своего рода технику пространства имен.
Например, если вы используете
$settings = array('host' => 'localhost');
function connect() {
global $settings;
}
есть вероятность, что в какой-то момент вы непреднамеренно переопределите переменную $setting. Я думаю, что при использовании $GLOBALS такой сценарий маловероятен.
$GLOBALS['_SETTINGS'] = array(... => ...);
function connect() {
$settings = $GLOBALS['_SETTINGS'];
}
Другим решением будет использование вашего собственного пользовательского класса, в котором вы храните свои настройки в статическом массиве. Опять же, это требует включения файла, в котором вы определяете класс, но ваши данные будут доступны во всех областях и не могут быть случайно переопределены.
Пример:
class MySettings {
private static $settings = array(
'host' => 'localhost',
'user' => 'root'
);
public static get($key) {
return self::$settings[$key];
}
}
function connect() {
$host = MySettings::get('host');
...
}
Не говорю, что это лучший способ сделать это, но, безусловно, один из способов достижения вашей цели.
person
Mikk
schedule
03.05.2011