Через & или global в PHP можно объявлять переменную, не присваивая ей значение?

Доброго времени суток!
вопрос по PHP

наткнулся вот на такую особенность в PHP

если написать вот такой код:
<?php
$x=$y;
?>
то будет ошибка:
Notice: Undefined variable: y in путь_к_файлу\имя_файла.php on line 2
что логично, ведь у нас $y ранее не была объявлена.

Но если поставить амперсанд & так:
<?php
$x=&$y;
?>
то всё нормально, нет никаких ошибок. хотя тут тоже $y не была ранее объявлена.
Всё выглядит так как буд-то мы с помощью & объявили переменную $y и присвоили ей пустую строку.

Вопрос1: есть ли в технической документации по PHP что-то на этот счёт? или это такое неописанное свойство, шаманство какое-то?

и кстати это абсолютно эквивалентно (на этот счет тоже нет в технической документации ничего на счет того что с помощью global можно создать переменную со значением пустой строки «»):

<?php
function test()
{
global $y; // объявлена $y и ей ничего не присвоено
}

test();
$x=$y; //тут нет &
print_r($GLOBALS);
?>

Вопрос2: есть ли в технической документации по PHP что-то на этот счёт про global? или это тоже такое неописанное свойство, шаманство какое-то?

 

спасибо!

а вот этот случай описан в документации? (это эквивалентно тому что я выше написал один в один, тоже не присваиваем $y никаких значений). если описан, то можете ссылку дать? я не смог найти(

<?php
function test()
{
global $y; // объявлена $y и ей ничего не присвоено
}

test();

echo gettype($y);

?>

 

Присвоено.
NULL
Вы помещаете в глобальный массив новый элемент с ключом ‘y’.

 

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

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