logo

Переменные global и static в PHP

Глобальные переменные позволяют получать доступ из функции к общим переменным. Оператор global показывает, что данная переменная будет той же самой переменной всюду в программе. Пример без оператора global:

<?php
function get_number() {
$num = 100;
}
$num = 10;
get_number();
echo $num;
?>

Результатом работы этого скрипта будет 10, так как переменная не видна из функции. Решить эту проблему поможет оператор глобальных переменных global.

<?php
function get_number() {
global $num;
$num = 100;
}
$num = 10;
get_number();
echo $num;
?>

Этот скрипт выведет 100, так как после определения переменной как глобальной она становится видимой из функции. Вообще существует 1000 и 1 способ изменить переменную из функции. Можно сделать return и присвоить функцию переменной. Можно использовать ссылки, например:

<?php
function get_number(&$num) {
$num = 100;
}
$num = 10;
get_number($num);
echo $num;
?>

Скрипт выведет 100. Тоже самое с помощью return.

<?php
function get_number() {
$num = 100;
return $num;
}
$num = 10;
$num = get_number();
echo $num;
?>

Этот скрипт также выведет 100. Ну и наконец с помощью классов:

<?php
class number
	{
	public $num;
	public function get_number()
		{
		$this->num = 100;
		}
	}
$obj = new number();
$obj->num = 10;
$obj->get_number();
echo $obj->num;
?>

Ну как вы догадались, здесь тоже будет 100. Еще существуют статические переменные. Статические переменные – это такие переменные, которые не исчезают после завершения функции. Значение статической переменной можно использовать при следующем вызове функции, она по прежнему будет иметь значение, которое получила при последнем вызове функции.

<?php
function get_number() {
	static $num = 0;
	$num++;
	echo $num."<br>";
}
$num = 10;
get_number();
get_number();
echo $num;
?>

Результатом будет 1, 2 и 10, так как переменная была объявлена статичной. Если бы мы этого не сделали результатом работы было бы 1, 1 и 10.

logo
logo