Изучаем PHP 7.№5. Работа с функциями. Область видимости. Глобальные переменные.


Теперь немного о переменных в функциях. Вы уже научились создавать функции и передавать в них параметры. Теперь посмотрим, как работают переменные в функции и вне функции.
Переменная с одним и тем же именем может быть созданная во многих функциях и иметь разные значения. Если вы создали переменную, но не передали ее в функцию в качестве аргумента, то функция не будет видеть эту переменную.
В свою очередь, переменные, созданные в функции, но не возвращаемые ею, так же не будут доступны в коде. Получается, что каждая функция видит только свою переменную, и не видит другие, это и есть область видимости.

Вот пример такой код:

<?php 

$test = 10;

function foo(){
    $test = "Строка";
    return $test;
}

function func(){
    $test = "Вторая Строка";
    return $test;
}    

//выводим значение переменной $test, которая вне функции
echo $test;

echo "<br>";

//выводим значение переменной $test, которая в функции foo
echo foo();

echo "<br>";

//выводим значение переменной $test, которая в функции func
echo func();

 ?>

Как видите, у нас есть несколько переменных с одинаковым именем, но разными значениями.

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

Это, так называемые, глобальные переменные. Что-то вроде констант, но при этом их значения могут меняться. Вот как работают глобальные и суперглобальные переменные:

<?php 

//Создаем обычные переменные
$a = 10;
$b = 11;

function summ(){
  //обращаемся к переменным вне функции, делая их глобальными
  global $a,$b;
  $c = $a+$b;
  return $c;
}

echo summ();


echo "<br>________________________________________________<br>";


$name = "Ира";
$fam = "Петрова";

function user(){

  //Еще один способ обращения к глобальным переменным
  echo $GLOBALS['name']." ".$GLOBALS['fam'];

  //Создаем суперглобальную переменную и присваиваем ей значение
  $GLOBALS['hello'] = "Привет";
}

user();

echo "<br>";

echo $hello;


 ?>

 

На этом пока все. Больше о функциях вы узнаете по ходу изучения последующих тем. Если возникнут вопросы, то задавайте их в комментариях.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.