我有类似这样的代码:
<?
$a="localhost";
function body(){
global $a;
echo $a;
}
function head(){
global $a;
echo $a;
}
function footer(){
global $a;
echo $a;
}
?>
有没有一种方法可以在一处定义全局变量并使变量$a
一次在所有函数中均可访问?不使用global $a;
更多?
您不应该再使用全局变量,因为它们在PHP 5.4中不可用。
如果变量不打算更改,则可以使用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);
示例:
define
在$ GLOBALS超级全局数组中添加变量,如
define
并在全球范围内使用
或者您可以使用在整个脚本中都可以访问的常量
define('FOOTER_CONTENT', 'Hello I\'m an awesome footer!');
function footer()
{
echo FOOTER_CONTENT;
}
如果变量在函数外部声明,则其已在全局范围内。因此,无需声明。但是从那里调用此变量必须有权访问此变量。如果要从函数内部调用,则必须使用$GLOBALS['variable'] = 'localhost';
关键字:
define('HOSTNAME', 'localhost');
在函数外使用全局关键字不是错误。如果要将此文件包含在函数中,则可以将变量声明为global
。
$variable = 5;
function name()
{
global $variable;
$value = $variable + 5;
return $value;
}
global
您也可以使用config.php
global $variable;
$variable = 5;
。这是一个超全局性的,因此无处不在。
other.php
function name()
{
require_once __DIR__ . '/config.php';
}
根据您的选择,您可以选择。
这个答案很晚,但是我要做的是设置一个类,该类将布尔值,数组和整数初始值保存为全局范围静态变量。任何常量字符串都是这样定义的。
$GLOBALS
$GLOBALS['variable'] = 5;
function name()
{
echo $GLOBALS['variable'];
}
关键字必须存在于类中,否则变量$ a,$ b和$ c不会在全局范围内。
[您以写问题的方式回答了这个问题-请使用'define'。但是一旦设置,就无法更改定义。
或者,可以在类中使用带有常量的技巧,例如class :: constant。您也可以通过向类声明静态属性来使它们可变,如果要更改静态属性,可以使用这些函数来设置静态属性。
您可以在Closure函数中尝试使用关键字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
或在符合您的意图的情况下使用Lambdas ...不过是PHP 7.0。这不是更好,而是另一种选择。
static
use
|$foo = "New";
$closure = (function($bar) use ($foo) {
echo "$foo $bar";
})("York");
如果您使用过程函数而不是变量,并在任意位置调用它们,该怎么办。
我通常收集配置值,然后将它们放入带有return语句的函数中。我只是在需要利用全局值并调用特定函数的地方添加了该代码。
class globe{
static $foo = "bar";
}