0

好的,这可能是一个简单/愚蠢的问题,但无法弄清楚......

我有一堂课,我将其包含在另一个 php 脚本中。

所以,我打电话例如$user->login,但如果我想创建一个函数并使用这个变量$user或函数外部定义的任何其他变量,我需要在函数内部声明它 GLOBAL 。

有没有办法在函数之外只声明一次 GLOBAL ,而不是在我需要的每个函数中声明它?

4

3 回答 3

3

不是真的,不。您可以根据情况做一些可怕的事情,但一般来说,只需使用global. 如果你发现这成为一个问题,你可能有太多的全局变量或出于错误的原因使用它们,你应该考虑将它们放入类(例如)中。


而且,只是为了它,说可怕的事情如下(按恐怖顺序):

  • 制作user一个函数并在每次需要$user全局时调用它
  • 创建user一个类并使用共享状态静态引用所有内容,因为 PHP 通常没有线程
  • 使用runkit将该变量视为超全局变量
  • 覆盖现有的超全局
于 2013-01-31T16:30:01.860 回答
1

...如果我想创建一个函数并使用此变量 $user 或在函数外部定义的任何其他变量...

你在这里不需要全局变量。将变量传递给您的函数。或者将其传递给您的类构造函数并将其存储在属性中。然后你可以在你的类的每个方法中访问该属性

于 2013-01-31T16:29:55.670 回答
0

好吧,所有全局变量都可以通过$GLOBALS['var_name']所以你可以使用$GLOBALS['user']->login,但你很快就会更喜欢声明global $user.

然后,您将 $user 作为参数添加到您的函数中。

于 2013-01-31T16:35:31.907 回答