- PHP Global: глобальные переменные
- PHP и глобальные переменные. Массив $GLOBALS
- Php присвоить значение глобальной переменной
- Переменные в блоках цикла и условных конструкций
- Локальные переменные
- Статические переменные
- Глобальные переменные
- Объявить глобальную переменную в PHP
- Используйте глобальное ключевое слово для объявления глобальной переменной в локальной области действия в PHP
- Используйте суперглобальную переменную $GLOBALS для использования глобальной переменной в локальной области действия в PHP
- Используйте функцию define() для определения постоянной глобальной переменной в PHP
PHP Global: глобальные переменные
В этой статье пойдет разговор о том, что такое глобальные переменные в PHP и чем они отличаются от локальных. Также читатель узнает о том, как использовать ассоциативный массив $GLOBALS вместо ключевого слова Global. Пояснения будут даны на конкретных примерах.
В языке программирования PHP существует понятие глобальных переменных (globally variables). Но для начала следует вспомнить о переменных локальных. Последние определены внутри пользовательской функции (внутри подпрограммы), причем на нее вы сможете ссылаться лишь в этой функции. Таким образом, локальная variable доступна лишь внутри той функции, в которой она определена (доступна в локальной области видимости).
Глобальные значения, в отличие от локальных, доступны всей программе целиком, куда также входят и подпрограммы (пользовательские функции).
Для языка программирования PHP все переменные, которые объявлены и задействуются в функции, локальны для функции (так обстоят дела по умолчанию). Таким образом, по дефолту возможность поменять значение переменной global в теле функции отсутствует.
Давайте представим, что мы в теле пользовательской функции PHP захотим применить переменную с именем, причем это имя будет идентично имени глобальной переменной, которая находится вне user function. В результате никакого отношения данная локальная variable к глобальной иметь не будет. В описанном только что случае в пользовательской функции будет создана local variable, причем с именем в PHP, которое будет идентично имени global variable, однако доступна такая переменная будет лишь внутри нашей пользовательской функции.
Все вышеописанное лучше пояснить на примере:
Сценарий кода выведет сначала 555, а потом 888. Чтобы избавиться от недостатка, продемонстрированного в function test (это не ошибка, а именно недостаток), в языке программирования PHP предусмотрена особая инструкция global. Эта инструкция дает возможность пользовательской функции взаимодействовать с глобальными переменными.
Рассмотрим этот принцип на очередном примере:
Скрипт с function sum выведет результат 15. Что тут произошло? После того, как $x и $y были определены внутри нашей функции в качестве global, все существующие ссылки на любую из этих статических переменных стали указывать уже на их глобальную версию. При данных обстоятельствах отсутствуют какие-либо ограничения на количество global variables, доступных к обработке с помощью user functions.
PHP и глобальные переменные. Массив $GLOBALS
Есть и другой способ, обеспечивающий доступ к глобальной области видимости. Он заключается в применении специального массива , определяемого PHP. Мы можем переписать предыдущий пример иначе, задействовав $GLOBALS:
$GLOBALS[«y»] = $GLOBALS[«x»] + $GLOBALS[«y»];
$GLOBALS является ассоциативным массивом, его ключ — это имя, его значение — это содержимое глобальной переменной. Важно обратить внимание на тот факт, что $GLOBALS может существовать практически в любой области видимости, что объясняется следующим образом: данный массив является суперглобальным.
Ниже расположен пример, который демонстрирует возможности использования суперглобальных переменных:
Хотите знать о PHP гораздо больше? Добро пожаловать на курс!
Php присвоить значение глобальной переменной
При использовании переменных и функций следует учитывать области видимости переменных. Область видимости задает область действия, доступности данной переменной.
Переменные в блоках цикла и условных конструкций
Блоки циклов и условных конструкций не образуют отдельной области видимости, и переменные, определенные в этих блоках, мы можем использовать вне этих блоков:
$condition = true; if($condition) < $name = "Tom"; >echo $name; // Tom
$i = 6; switch($i) < case 5: $name = "Tom"; break; case 6: $name = "Bob"; break; default: $name = "Sam"; break; >echo $name; // Bob
Локальные переменные
Локальные переменные создаются внутри функции. К таким переменным можно обратиться только изнутри данной функции. Например:
showName(); echo $name; // так написать нельзя, так как // переменная $name существует // только внутри функции showName( ?>
В данном случае в функции showName() определена локальная переменная $name . Соответственно обратиться в этой переменной мы можем только внутри функции showName() , но не вне ее.
То же самое относится и к параметрам функции: вне функции ее параметры также не существуют.
Статические переменные
На локальные переменные похожи статические. Они отличаются тем, что после завершения работы функции их значение сохраняется. При каждом новом вызове функция использует ранее сохраненное значение. Например:
getCounter(); // counter=1 getCounter(); // counter=2 getCounter(); // counter=3 ?>
Чтобы указать, что переменная будет статической, к ней добавляется ключевое слово static . При трех последовательных вызовах функции getCounter() переменная $counter будет увеличиваться на единицу.
Если бы переменная $counter была обычной нестатической, то при каждом вызове функция getCounter() выводила бы 1.
Как правило, статические переменные служат для создания различных счетчиков, как в примере выше.
Глобальные переменные
Глобальные переменные по умолчанию не доступны внутри функции. Например:
Данный код не будет работать, а интрепретатор PHP известит нас, что переменная $name не определена.
Тем не менее мы можем обратиться внутри функции к глобальной переменной. Для этого необходимо использовать ключевое слово global :
Для получения доступа к глобальной переменной в функции с помощью оператора global объявляется переменная с тем же именем:
После этого к глобальной переменной $name можно будет обращаться внутри функции. При чем мы можем не только получать ее значение, но и изменить его:
changeName(); echo $name; // Tomas ?>
В качестве альтернативы оператору global для обащения к глобальным переменным мы можем использовать встроенный массив $GLOBALS :
"; // изменяем значение переменной $name $GLOBALS["name"] = "Tomas"; > changeName(); echo "Новое имя: " . $name; ?>
Чтобы обратиться к глобальной переменной $name, применяется выражение $GLOBALS[«name»] — в квадратные скобки передается название переменной (без знака $). Результат работы скрипта:
Старое имя: Tom Новое имя: Tomas
Объявить глобальную переменную в PHP
- Используйте глобальное ключевое слово для объявления глобальной переменной в локальной области действия в PHP
- Используйте суперглобальную переменную $GLOBALS для использования глобальной переменной в локальной области действия в PHP
- Используйте функцию define() для определения постоянной глобальной переменной в PHP
Мы представим метод объявления глобальной переменной в PHP с использованием ключевого слова global . Этот метод устанавливает глобальную область видимости переменной, объявленной вне функции, в локальную область видимости, чтобы использовать переменную внутри функции.
В этой статье будет продемонстрирован другой метод объявления глобальной переменной в PHP с использованием суперглобальной переменной $GLOBALS . Этот метод будет использовать суперглобальную переменную для доступа к глобальной переменной в локальной области.
Мы также продемонстрируем другой метод объявления глобальной переменной в PHP с помощью функции define() . Этот метод представляет собой способ объявления постоянной глобальной переменной в PHP. Мы не можем изменить значение константы.
Используйте глобальное ключевое слово для объявления глобальной переменной в локальной области действия в PHP
Мы можем использовать ключевое слово global для объявления глобальной переменной в локальной области видимости в PHP. Ключевое слово global устанавливает глобальную область видимости как переменную в локальную область видимости. Мы можем определить переменную вне функции. Когда мы пытаемся получить доступ к переменной внутри функции, глобальная область видимости переменной нам не позволяет. Таким образом, мы можем использовать ключевое слово global внутри функции с переменной. Затем мы можем получить доступ к переменной внутри функции.
Например, создайте переменную $crypto и присвойте ей Bitcoin . Затем создайте функцию body() . Внутри функции используйте ключевое слово global перед переменной $crypto . Выведите переменную $crypto с помощью оператора echo и объедините строку is a top cryptocurrency. . с помощью . оператор точки. Вне тела функции вызовите функцию body() .
Пример ниже импортирует глобальную область видимости переменной $crypto в локальную область видимости внутри функции body() . Таким образом, мы можем получить доступ к переменной $crypto внутри функции. Когда мы пытаемся напечатать переменную без использования ключевого слова global , мы не сможем этого сделать, потому что локальная область видимости переменной не существует. Прочтите Руководство по PHP, чтобы узнать больше об областях и ключевом слове global .
#php 7.x php $crypto = 'Bitcoin'; function body() global $crypto; echo $crypto." is a top cryptocurrency."; > body(); ?>
Bitcoin is a top cryptocurrency.
Используйте суперглобальную переменную $GLOBALS для использования глобальной переменной в локальной области действия в PHP
Мы можем использовать суперглобальную переменную $GLOBALS для ссылки на глобальные переменные области видимости. Переменная $GLOBALS — это ассоциативный массив, содержащий ссылки на переменные, определенные в глобальной области видимости. Мы можем записать переменную внутри скобок $GLOBALS , чтобы ссылаться на глобальную переменную как $GLOBALS[«name»] . Этот метод пытается распечатать локальную переменную и глобальную переменную внутри функции. Он использует суперглобальную переменную $GLOBALS для ссылки на переменную в глобальной области видимости внутри функции.
Например, создать переменную $var и присвоить ей строку глобальная переменная области видимости . Напишите функцию body() и создайте ту же переменную $var внутри функции и на этот раз назначьте строку переменная локальной области видимости . Во-первых, отобразите переменную $var , ссылающуюся на нее в массиве $GLOBALS , как $GLOBALS[«var»] . В следующей строке выведите переменную $var с оператором echo .
В приведенном ниже примере переменные $var печатаются два раза. Первый использует массив $GLOBALS[«var»](https://www.php.net/manual/en/reserved.variables.globals.php) и в результате выводит глобальную переменную, определенную вне функции. Во второй раз отображается переменная внутри функции. Прочтите [Руководство по PHP], чтобы узнать больше о суперглобальной переменной $GLOBALS .
#php 7.x php $var = "global scope variable"; function body() $var = "local scope variable"; echo '$var in global scope: ' . $GLOBALS["var"] . "
"; echo '$var in current scope: ' . $var ; > body(); ?>
$var in global scope: global scope variable $var in current scope: local scope variable
Используйте функцию define() для определения постоянной глобальной переменной в PHP
Этот метод использует функцию define() для определения глобальной переменной в PHP. Функция принимает два параметра. Первый параметр — это имя константы, а второй — значение константы. По умолчанию константа не чувствительна к регистру. Мы можем получить доступ к константе из любого места скрипта. Знак $ не используется при определении константы. Как видно из названия, его ценность неизменна. Константа может содержать только строку и число в качестве значения.
Например, напишите функцию define() и присвойте константе имя BAND и значение Opeth . Создайте функцию bandName() и используйте оператор echo для отображения константы BAND . Вне функции вызовите функцию bandName() . Скрипт выдаст значение Opeth . Прочтите Руководство по PHP, чтобы узнать больше о функции define() .
# php 7.x php define('BAND', 'Opeth'); function bandName() echo BAND; > bandName(); ?>
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.