Сделать переменную доступной для всех классов, методов, функций и включает в себя, как $_POST

Этот вопрос кажется достаточно простым, но я не могу найти ответ нигде...

В начале моего php script/файла я хочу создать переменную.

$variable = 'this is my variable';

Я хочу, чтобы эта переменная была доступна во всем script, так что все классы, методы, функции, включенные скрипты и т.д. могут просто вызвать эту переменную как переменную $.

Class MyClass
{
  public function showvariable()
  {
     echo $variable;
  }
}

Переменные $_SESSION, $_POST, $_GET ведут себя так. Я могу просто написать метод и использовать $_POST, и он будет работать. но если я использую переменную $, которую я определил в начале моего script, он говорит: "Примечание: переменная Undefined: переменная в..." Она даже говорит об этом, когда я пишу функцию, а не метод класса...

Я попытался написать

global $variable = 'this is my variable';

Но тогда script не загрузится... "Ошибка HTTP 500 (Внутренняя ошибка сервера): неожиданное условие возникло, когда сервер пытался выполнить запрос.

Как сделать переменную по-настоящему глобально доступной, например $_POST?

Зачем мне это нужно? Я специально планирую использовать его как токен формы. В верхней части страницы я генерирую токен формы в виде $токена, в нижней части страницы храня его в сеансе. Прежде чем обращаться с какой-либо формой, я проверяю, совпадает ли токен SESSION с токеном POST... И поскольку у меня часто есть несколько форм на странице (форма входа в верхнюю навигацию и форма регистрации в основном корпусе), я просто хочу сделать это удобным и call $token для каждой формы. Иногда мои формы формируются классами или функциями, но они не распознают переменную и говорят, что она не определена.

Ответ 1

Я нашел это... -Я подумал, что это будет достаточно легко...

Мне нужно вызвать переменную с помощью

$GLOBALS['variable'];

Только что нашел... наконец... http://php.net/manual/en/reserved.variables.globals.php

EDIT, как через 8 месяцев или около того:

Я только что узнал о КОНСТАНТАХ!

define('name', 'value');

Они просто не могут быть переназначены... Думаю, я тоже мог бы это использовать! http://www.php.net/manual/en/language.constants.php

Ответ 2

Просто определите переменную вне любого класса или функции. Затем используйте ключевое слово global внутри любого класса или функции.

<?php

// start of code

$my_var = 'Hellow Orld';

function myfunc() {
  global $my_var;
  echo $my_var; // echoes 'Hellow Orld';
}

function myOtherFunc() {
  var $my_var;
  echo $my_var; // echoes nothing, because $my_var is an undefined local variable.
}


class myClass {

  public function myFunc() {
    global $my_var;
    echo $my_var; // echoes 'Hellow Orld';
  }

  public function myOtherFunc() {
    var $my_var;
    echo $my_var; // echoes nothing.
  }

}

myFunc(); // "Hellow Orld"
myOtherFunc(); // no output
myClass->myFunc(); // "Hellow Orld"
myClass->myOtherFunc(); // no output

// end of file
?>

Ответ 3

вам нужно объявить глобальным доступ к нему в любой области действия:

вверху вашего script:

global $var;
$var= "this is my variable";

в вашем классе

...
public function showvariable(){
    global $var;
    echo $var;
}
...

Ответ 4

В PHP глобальные переменные должны быть объявлены как таковые в каждой функции, в которой они будут использоваться. Смотрите: Руководство по PHP, раздел о области видимости переменных

Таким образом, глобальные переменные часто являются плохой идеей, и в большинстве случаев есть способ избежать их использования.