У меня есть код что-то вроде этого:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
Есть ли способ определить глобальную переменную в одном месте и сделать переменную $a
доступной во всех функциях одновременно? не используя global $a;
больше?
global
ключевое слово, рассмотрите возможность использования$GLOBALS['a']
суперглобала во всех областях или передайте параметр своим функциям.Ответы:
$GLOBALS
Массив может быть использован вместо:Из руководства :
Если у вас есть набор функций, которым нужны некоторые общие переменные, класс со свойствами может быть хорошим выбором вместо глобального:
источник
Если переменная не изменится, вы можете использовать
define
Пример:
источник
FOOTER_CONTENT
пытаются изменить? Это так же, какfinal
в Java илиconst
в C, C ++ и C #?Добавьте ваши переменные в суперглобальный массив $ GLOBALS, например:
и использовать его во всем мире
или вы можете использовать константу, которая доступна по всему сценарию
источник
Если переменная объявлена вне функции, она уже находится в глобальной области видимости. Так что нет необходимости декларировать. Но откуда вы вызываете эту переменную, вы должны иметь доступ к этой переменной. Если вы звоните изнутри функции, вы должны использовать
global
ключевое слово:Использование глобального ключевого слова вне функции не является ошибкой. Если вы хотите включить этот файл в функцию, вы можете объявить переменную как
global
.Вы также можете использовать
$GLOBALS
. Это суперглобальный, поэтому он имеет доступ везде.В зависимости от вашего выбора вы можете выбрать любой.
источник
Этот ответ очень поздно, но я делаю, чтобы установить класс, который содержит логические значения, массивы и целочисленные начальные значения в качестве статических переменных глобальной области видимости. Любые постоянные строки определяются как таковые.
В
static
ключевых словах должны присутствовать в классе иначе вары $ а, $ Ь и $ с не будет глобальная область.источник
Вы ответили на это так, как написали вопрос - используйте «определить». но после установки вы не можете изменить определение.
В качестве альтернативы, есть классы с константой в классе, такие как class :: constant, которые вы можете использовать. Вы также можете сделать их переменными, объявив статические свойства классу, с функциями для установки статического свойства, если вы хотите изменить его.
источник
Вы можете попробовать ключевое слово
use
в функциях Closure или Lambdas, если это соответствует вашим намерениям ... Хотя PHP 7.0. Не лучше, а просто альтернатива.демо | Информация
источник
Давайте подумаем немного по-другому:
И вы можете использовать и изменять его так, как вам нравится, например:
источник
Что делать, если вы используете процедурную функцию вместо переменной и вызываете их где угодно, как вы.
Я обычно делаю коллекцию значений конфигурации и помещаю их в функцию с оператором return. Я просто включаю это, где мне нужно использовать глобальное значение и вызывать определенную функцию.
источник
$GLOBALS[]
это правильное решение, но поскольку мы говорим об альтернативах, функция также может легко выполнить эту работу:источник
Вам больше не следует использовать глобальные переменные, они недоступны в PHP 5.4.
источник