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


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

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

$variable = 'this is my variable';

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

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

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

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

global $variable = 'this is my variable';

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

.

Как я могу сделать переменную действительно глобально доступной, например $_ПОСТ?

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

Author: olli, 2013-03-16

4 answers

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

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

$GLOBALS['variable'];

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

РЕДАКТИРОВАТЬ примерно через 8 месяцев или около того:

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

define('name', 'value');

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

 15
Author: olli, 2014-06-04 14:05:45

Просто определите переменную вне любого класса или функции. Затем используйте ключевое слово 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
?>
 8
Author: Buttle Butkus, 2013-03-16 02:56:49

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

В верхней части вашего сценария:

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

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

...
public function showvariable(){
    global $var;
    echo $var;
}
...
 2
Author: kennypu, 2013-03-16 02:47:31

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

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

 2
Author: erlandsson, 2013-03-16 02:47:35