сделайте переменную доступной для всех классов, методов, функций и включает в себя, как и $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 в каждой форме. Иногда мои элементы формы генерируется классами или функциями, но они не распознают переменную и говорят, что она не определена.
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
Просто определите переменную вне любого класса или функции. Затем используйте ключевое слово 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 $var;
$var= "this is my variable";
В вашем классе
...
public function showvariable(){
global $var;
echo $var;
}
...
В PHP глобальные переменные должны быть объявлены как таковые в каждой функции, в которой они будут использоваться. См.: Руководство по PHP, раздел, посвященный области видимости переменных
При этом глобальные переменные часто являются плохой идеей, и в большинстве случаев есть способ избежать их использования.