Ну, почему бы вам просто не проверить? ;-)
Примечание: не так просто, как вы думаете - прочитать полный ответ ;-)
Вызов функции hello_testing();
, без установки переменной:
hello_testing();
У меня нет выхода - что указывает isset
false
.
Вызов функции, после установки переменной:
$conditional_random = 'blah';
hello_testing();
Я получаю выход:
foo is inside
который указывает global
работы, как и следовало ожидать, когда переменная установлена - хорошо , не следует сомневаться в этом.^
НО обратите внимание, что isset
вернется false
если переменная установлена, и null
!
Посмотреть manual page of isset()
Это означает, что лучше тест будет:
function hello_testing() {
global $conditional_random;
var_dump($conditional_random);
}
hello_testing();
и это отображается:
null
Нет Примечание: переменная не существует! Даже если null
.
Как я не установил переменную вне функции, она показывает, что global
устанавливает переменную - но она не помещает в нее значение; это означает, что это null
, если оно еще не установлено вне функции.
Хотя:
function hello_testing() {
//global $conditional_random;
var_dump($conditional_random);
}
hello_testing();
Дает:
Notice: Undefined variable: conditional_random
Доказывает, что уведомления включены ;-)
И, если глобальное не "установить" переменную , предыдущий пример дал бы такое же уведомление.
И, наконец:
function hello_testing() {
global $conditional_random;
var_dump($conditional_random);
}
$conditional_random = 'glop';
hello_testing();
Дает:
string 'glop' (length=4)
(Сугубо, чтобы продемонстрировать мой пример не обманут ^^)
На боковой ноте старайтесь держаться подальше от глобальной. Это верный признак кода спагетти. –
@Manos Я согласен, но если вы развиваетесь в сообществе Wordpress (в качестве примера), то более или менее невозможно избегать глобальных переменных или ряда других плохих соглашений. На мой взгляд, если вы в первую очередь работаете с PHP, вы смирились с тем, чтобы терпеть неудачные методы кодирования и просто должны знать относительно безопасные способы работы с тем, что у вас есть. –