Есть ли различия между $ GLOBALS и глобальным $ test?

кто-нибудь, пожалуйста, дайте мне знать основные различия между

$GLOBALS["test"] and global $test 

и будет ли смысл, что, если я использую $GLOBALS["test"] вместо $_SESSION['test'] ?

и будет ли смысл, что, если я использую $ GLOBALS ["test"] вместо $ _SESSION ['test']?

Нет, сеанс отличается от переменной, доступной во всем мире.

$ GLOBALS

Ассоциативный массив, содержащий ссылки на все переменные, которые в настоящее время определены в глобальной области действия сценария. Имена переменных – это ключи массива.

http://php.net/manual/en/reserved.variables.globals.php

Объяснение:

$GLOBALS – это ассоциативный массив, доступный во всем вашем скрипте, нет необходимости использовать global $test

Примечание. Это «суперглобальная» или автоматическая глобальная переменная. Это просто означает, что он доступен во всех областях по всему сценарию. Нет необходимости делать глобальную переменную $; для доступа к ним в рамках функций или методов.

Нет никакой разницы между $GLOBALS["test"] и global $test . Оба являются чистым злом и не должны использоваться.

Почему они злы?

  1. Внезапно ваш код зависит от некоторой внешней среды, его переносимость падает на пятки. Это требует некоторой переменной, определенной где-то, никто не знает, где, с некоторой ценностью, никто не знает, что такое правильное значение.
  2. Представьте, что $test должен хранить информацию о чем-то, скажем: количество мячей. Все нормально, пока не будет такой переменной, и она сохранит то, что она должна хранить. Однако что произойдет, если вы решите удалить эту переменную или использовать ее для других целей? Ба, роковые ошибки выходят из ниоткуда! Вы не знаете, что происходит, все работает нормально, вы просто меняете стоимость переменной, и все разваливается.