好了,你为什么不只是测试? ;-)
注:不那么容易,因为你会觉得 - 阅读完整的答案;-)
调用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)
(纯粹是为了证明我的例子不是欺骗^^)
在旁边注意尽量远离全球。这是意大利面条代码 – 2010-04-03 14:23:15
@ Manos的确定标志我同意,但是如果你在Wordpress社区开发(作为一个例子),或多或少不可能远离全局变量或许多其他不好的约定。在我看来,如果您首先使用PHP,那么您已经放弃了自己去忍受糟糕的编码习惯,只需要知道相对安全的方式来处理您的问题。 – 2015-04-14 16:50:19