Есть ли разница между $ GLOBALS ["test"] и глобальным $ test? - PullRequest
1 голос
/ 22 мая 2010

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

$GLOBALS["test"] and global $test

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

Ответы [ 2 ]

4 голосов
/ 22 мая 2010

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

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

$ GLOBALS

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

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

Пояснение:

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

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

1 голос
/ 22 мая 2010

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

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

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