19

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

在我的 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,在页面底部,我将其存储在会话中。在处理任何表单之前,我会检查 SESSION 令牌是否与 POST 令牌匹配......而且由于我经常在页面上有多个表单(顶部导航中的登录表单,主体中的注册表单)我只是想让它方便并且在每个表单上调用 $token。有时我的表单元素是由类或函数生成的,但它们无法识别变量并说它没有定义。

4

4 回答 4

17

我找到了... -.- 我认为这很容易...

我必须通过使用调用变量

$GLOBALS['variable'];

刚刚找到...终于... http://php.net/manual/en/reserved.variables.globals.php

大约8 个月后编辑:

我刚刚了解了常数!

define('name', 'value');

他们只是不能被重新分配......我想我也可以使用它! http://www.php.net/manual/en/language.constants.php

于 2013-03-16T02:46:29.410 回答
10

只需在任何类或函数之外定义一个变量。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
?>
于 2013-03-16T02:56:49.317 回答
2

您需要声明 global 以在任何函数范围内访问它:

在脚本的顶部:

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

在你的课上

...
public function showvariable(){
    global $var;
    echo $var;
}
...
于 2013-03-16T02:47:31.937 回答
2

在 PHP 中,全局变量必须在每个使用它们的函数中声明。请参阅:PHP 手册,关于变量范围的部分

话虽如此,全局变量通常不是一个好主意,在大多数情况下,有一种方法可以避免使用它们。

于 2013-03-16T02:47:35.010 回答