使变量可用于所有类、方法、函数和包含,就像 $_POST

2022-08-30 21:01:37

这个问题看起来很简单,但我在任何地方都找不到答案......

在我的php脚本/文件的开头,我想创建一个变量。

$variable = 'this is my variable';

我希望这个变量在整个脚本中可用,以便所有类,方法,函数,包含的脚本等都可以简单地调用此变量作为$variable。

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

$_SESSION、$_POST、$_GET变量都表现得像这样。我可以写一个方法并使用$ _POST,它就会起作用。但是如果我使用$variable,我在脚本的开头定义了它,它说“注意:未定义的变量:变量在......”它甚至说,当我写一个函数,而不是一个类方法...

我试图写

global $variable = 'this is my variable';

但是脚本无法加载...“HTTP 错误 500(内部服务器错误):服务器尝试满足请求时遇到意外情况。

如何使变量真正全局可访问,例如 $_POST?

我为什么需要这个?我特别计划将其用作表单令牌。在页面顶部,我生成我的表单令牌作为$token,在页面底部,我将其存储在会话中。在处理任何表单之前,我会检查会话令牌是否与POST令牌匹配...由于我经常在页面上有多个表单(顶部导航中的登录表单,主体中的注册表单),我只想使其方便并在每个表单上调用$token。有时我的预言是由类或函数生成的,但它们不识别变量并说它没有定义。


答案 1

我发现了它......-.-我认为这很容易...

我必须通过使用

$GLOBALS['variable'];

刚刚发现它...最后。。。http://php.net/manual/en/reserved.variables.globals.php

编辑像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
?>

推荐