Сделать переменную доступной для всех классов, методов, функций и включает в себя, как $_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, раздел о области видимости переменных
Таким образом, глобальные переменные часто являются плохой идеей, и в большинстве случаев есть способ избежать их использования.