Я надеялся, что ниже будет напечатано
live
got here
Вместо этого он печатает
got here
Код:
$config['env'] = 'live';
sayEnvironment();
function sayEnvironment () {
echo $config['env'];
echo 'got here';
}
Как мне установить эту глобальную переменную и получить к ней доступ ко всему внутри функции?
Глобалы - плохой знак. Для этого может иметь больше смысла константа, поскольку я предполагаю, что среда не изменится во время выполнения. Подробности указаны в повторяющемся вопросе.






Используйте global для использования глобальных переменных внутри функций:
$config['env'] = 'live';
sayEnvironment();
function sayEnvironment () {
global $config;
echo $config['env'];
echo 'got here';
}
Или, если у вас есть анонимная функция, вы можете использовать use:
$sayEnvironment2 = function () use ($config) {
echo $config['env'];
echo 'got here';
};
$sayEnvironment2(); // must be called AFTER php parser has seen actual function.
Это не сработает, там написано синтаксическая ошибка, неожиданное использование (T_USE), ожидание '{'
@Exitos К сожалению, пропущен контекст анонимной функции.
Чтобы ответить на ваш вопрос, вы можете использовать для этого PHP $GLOBALS:
<?php
$GLOBALS['config']['env'] = 'live';
sayEnvironment();
function sayEnvironment () {
echo $GLOBALS['config']['env'];
echo 'got here';
}
Хотя это не совсем хорошая практика, но, не зная, к чему вы стремитесь, трудно посоветовать другой метод. Обычно лучше использовать какую-либо форму внедрения зависимостей.
Документы к нему: http://php.net/manual/en/reserved.variables.globals.php
Ну вот,
$config['env'] = 'live';
sayEnvironment();
function sayEnvironment () {
global $config;
echo $config['env'];
echo 'got here';
}
Возможный дубликат Как объявить глобальную переменную в php?