如何声明PHP中的全局变量?(How to declare a global variable in

2019-06-21 06:47发布

我的代码是这样的:

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

    function head(){
        global $a;
        echo $a;
    }

    function footer(){
        global $a;
        echo $a;
    }
?>

有没有办法在一个地方定义全局变量,使变量$a同时在所有的函数访问? 而不使用的global $a; 更多?

Answer 1:

$GLOBALS数组可以用来代替:

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

function body(){

    echo $GLOBALS['a'];
}

从手册 :

包含到当前在脚本的全局范围中定义的所有变量的引用关联数组。 该变量名是该阵列的密钥。


如果你有一组需要一些公共变量功能,具有属性的类可能是一个不错的选择,而不是一个全球性的:

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);


Answer 2:

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

例:

define('FOOTER_CONTENT', 'Hello I\'m an awesome footer!');

function footer()
{
    echo FOOTER_CONTENT;
}


Answer 3:

添加您的变量$ GLOBALS超级全局数组一样

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

和全球范围内使用

或者您可以使用常数是整个脚本访问

define('HOSTNAME', 'localhost');  


Answer 4:

如果一个变量的函数其已经在全球范围之外声明。 因此,有没有必要申报。 但是,从那里你调用这个变量必须能够访问这个变量。 如果你是从一个函数中调用你必须使用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'];
}

根据你的选择,你可以选择。



Answer 5:

这个答案是非常晚,但我做的是设置保存布尔,数组和整数初值为全球范围内的静态变量的类。 任何常量字符串被定义为这样。

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的关键字必须存在于其他类$ A,$ b和$ C不会被全局范围的增值经销商。



Answer 6:

你在你写的问题的方式回答了这个 - 使用“定义”。 但一旦设置,你不能改变一个定义。

另外,还有一些具有恒定技巧的一类,如类::常量,您可以使用。 你也可以让他们通过声明静态属性的类,有功能,如果你想改变它,设置静态属性变量。



Answer 7:

您可以尝试关键字use闭合的功能或lambda表达式 ,如果这符合你的意图... PHP 7.0虽然。 这并不是说是它的好,但只是一个替代品。

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

演示 | 信息



Answer 8:

让我们觉得有一点不同:

class globe{
    static $foo = "bar";
}

您还可以使用并修改它everyway你喜欢的,如:

function func(){
    echo globe::$var;
}


Answer 9:

如果你使用的程序函数,而不是变量,并呼吁他们任何地方你。

我一般都配置值的集合,并把它们在函数内部使用return语句。 我只是包括在我需要利用全球价值和调用特定的功能。

function host()
{
   return "localhost";
}


Answer 10:

你不应该使用全局变量来了,他们是不是在PHP 5.4可用。



文章来源: How to declare a global variable in php?