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

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

в начале моего PHP-скрипта / файла я хочу создать переменную.

$variable = 'this is my variable';

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

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

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

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

global $variable = 'this is my variable';

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

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

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

4 ответов


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

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

$GLOBALS['variable'];

только что нашел его... в конечном счете... http://php.net/manual/en/reserved.variables.globals.php

редактировать как 8 месяцев или так:

Я только что узнал о константах!

define('name', 'value');

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


просто определите переменную вне любого класса или функции. Затем используйте ключевое слово 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
?>

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

в верхней части вашего скрипта:

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

в свой класс

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

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

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