有没有什么方法可以定义变量,这样我在每个函数中都不需要global $var1;
?只需在开始时定义它并在需要的地方继续使用。我知道$ GLOBALS存在,但不想使用它。
答案 0 :(得分:2)
首先让我试着解释为什么你不应该使用全局变量,因为它们非常难以管理。假设团队成员将文件中的$ADMIN
变量覆盖为1,然后引用$ADMIN
变量的所有代码现在将具有值1。
globals是如此PHP4,所以你需要选择一个更好的设计模式,特别是如果这是新代码。
在不使用丑陋global
范例的情况下执行此操作的方法是使用类容器。这可能被称为某些人的“注册表”。
class Container {
public static $setting = "foo";
}
echo Container::$setting;
这使得此变量的位置更加清晰,但是它具有无法动态设置属性的弱点,因为在PHP中您不能静态地执行此操作。
如果你不介意创建一个对象,并以这种方式设置动态变量,那就可以了。
答案 1 :(得分:1)
您需要将变量作为参数传递给该函数,以避免使用GLOBALS。
有问题的场景(有效!但不惜一切代价避免使用)
<?php
$test = 1;
function test()
{
global $test;
echo $test; // <--- Prints 1
}
test();
正确的方式......
<?php
$test = 1;
function test($test)
{
echo $test; // <--- Prints 1
}
test($test); //<--- Pass the $test param here
答案 2 :(得分:0)
此行为称为超全局变量。但是php限制了它们的预定义列表:Superglobals。
所以你不能添加你自己的超全局变量。
我的建议从最不那么激进:
\G::$variable
)