【问题标题】:PHP superglobal variables [duplicate]PHP超全局变量[重复]
【发布时间】:2014-03-30 21:11:00
【问题描述】:

我试图让一个 PHP 脚本调用几个函数,这些函数应该对几个变量进行一些操作。

例如,让一个函数获取矩阵,然后第二个函数对其执行一项操作,然后第三个对其执行不同的操作。

当它在一个文件中时一切都很好,但是现在我已经将它拆分了它就行不通了。我得到所有未定义的索引和未定义的变量错误。

我应该如何处理变量,以便它们在整个脚本中保持其值?

【问题讨论】:

  • 把它们放在一个会话中
  • 是的,我刚刚成功地将值存储为 SESSION 变量。

标签: php mysql database session connection


【解决方案1】:

最简单的方法(在较大的 PHP 项目中也是不好的方法,因为这会使事情变得非常混乱非常快)是使用 $GLOBALS['myvar'] 在全局范围内设置/获取 $myvar 的变量值。或者你可以使用:

<?php
global $myvar;
//use the $myvar below...

在任何地方使用它,包括在函数内部或新文件中,以在全局范围内使用 $myvar。

顺便说一句,根据上下文,有更好的方法可以让某些东西“无处不在”。它可能有点超出这个全局问题的范围,但请注意还有其他方法,例如使用 Singleton 方法(强制在整个软件中使用的类的单个实例,使用返回对象的静态类,如MyClass::getInstance())。对于一个简单的 2/3 文件脚本,这可能并不重要(除非您需要可重用的代码),但对于任何更复杂的东西,请避免对所有内容使用全局变量。您将省去很多麻烦,代码将更易于维护,并且您的同行不会因为使用全局变量而在背后嘲笑您。

【讨论】:

    【解决方案2】:

    你是否使用了 require_once('file2.php') ,第三个文件也是如此?假设您正在运行第一个文件。

    将功能拆分为单独的文件需要将这些文件包含在内,就好像它们都在一个文件中一样。确保你这样做了。

    【讨论】:

    • 是的,我做到了,但变量仍在函数范围内。如果我只有一个变量作为函数的结果,那会很容易,我会'return $var'。
    • 能否请您展示一些我们可以使用的代码?
    • 我已经设法用 SESSION 变量做到了。
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    • 2016-09-15
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多