如何在PHP中声明一个全局variables?

我有这样的代码:

<? $a="localhost"; function body(){ global $a; echo $a; } function head(){ global $a; echo $a; } function footer(){ global $a; echo $a; } ?> 

有什么办法可以在一个地方定义全局variables,并且可以一次性在所有函数中访问variables$a吗? 不使用global $a; 更多?

$GLOBALS数组可以用来代替:

 $GLOBALS['a'] = 'localhost'; function body(){ echo $GLOBALS['a']; } 

从手册 :

包含当前在脚本的全局范围中定义的所有variables的引用的关联数组。 variables名称是数组的键。


如果你有一组需要一些公共variables的函数,那么带有属性的类可能是一个不错的select,而不是全局的:

 class MyTest { protected $a; public function __construct($a) { $this->a = $a; } public function head() { echo $this->a; } public function footer() { echo $this->a; } } $a = 'localhost'; $obj = new MyTest($a); 

如果variables不会改变,你可以使用define

例:

 define('FOOTER_CONTENT', 'Hello I\'m an awesome footer!'); function footer() { echo FOOTER_CONTENT; } 

在$ GLOBALS超级全局数组中添加你的variables

 $GLOBALS['variable'] = 'localhost'; 

并在全球范围内使用

或者您可以使用可在整个脚本中访问的常量

 define('HOSTNAME', 'localhost'); 

这个答案是非常晚的,但我所做的是设置一个类,将布尔值,数组和整数初始值保存为全局范围静态variables。 任何常量string都是这样定义的。

 define("myconstant", "value"); class globalVars { static $a = false; static $b = 0; static $c = array('first' => 2, 'second' => 5); } function test($num) { if (!globalVars::$a) { $returnVal = 'The ' . myconstant . ' of ' . $num . ' plus ' . globalVars::$b . ' plus ' . globalVars::$c['second'] . ' is ' . ($num + globalVars::$b + globalVars::$c['second']) . '.'; globalVars::$a = true; } else { $returnVal = 'I forgot'; } return $returnVal; } echo test(9); ---> The value of 9 + 0 + 5 is 14. echo "<br>"; echo globalVars::$a; ----> 1 

static关键字必须存在于类中,否则variables$ a,$ b和$ c将不会被全局作用域。

你用你写这个问题的方式回答了这个问题 – 用'define'。 但一旦设置,你就不能改变一个定义。

或者,在类中有一些常量,比如class :: constant,你可以使用它。 你也可以通过向类声明静态属性来使它们变化,如果你想改变它的话,用函数设置静态属性。

如果这符合你的意图,你可以尝试在closuresfunction或Lambda的关键字use …虽然PHP 7.0。 这不是更好,但只是一个select。

 $foo = "New"; $closure = (function($bar) use ($foo) { echo "$foo $bar"; })("York"); 

演示 | 信息

在函数之外声明的variables具有GLOBAL SCOPE,只能在函数之外访问

 <?php global $a; $a=10; echo $a; function xl($a){ echo "in the function".$a." <br/>"; } echo "in outside ".$a."<br/>"; xl($a); ?> 

你不应该再使用全局variables,它们不能在PHP 5.4中使用。