Как объявить глобальную переменную в php?


Answers

Если переменная не изменится, вы можете использовать define

Пример:

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

function footer()
{
    echo FOOTER_CONTENT;
}
Question

У меня есть код примерно так:

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

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

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

есть ли способ определить глобальную переменную в одном месте и сделать переменную $a доступной во всех функциях сразу? без использования global $a; Больше?




Этот ответ очень поздний, но то, что я делаю, задается классом, который содержит булевы, массивы и целые-начальные значения как статические переменные глобальной области. Любые константные строки определяются как таковые.

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 ключевые слова должны присутствовать в классе else, а vars $ a, $ b и $ c не будут находиться в глобальном масштабе.




Вы можете попробовать использовать ключевое слово в функциях Closure или Lambdas, если это соответствует вашему намерению ... PHP 7.0. Это не лучше, а просто альтернатива.

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

demo | info




Вам больше не следует использовать глобальные переменные, они недоступны в PHP 5.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'];
}

В зависимости от вашего выбора вы также можете выбрать.




Links