PHP全局变量可供应用程序和其他用户使用

时间:2016-03-15 20:35:22

标签: php global-variables

PHP全局变量

  1. 它们是否可用于应用程序范围,例如:如果它们是创建的 index.php是file.php
  2. 中可用的值
  3. 每个用户的全局变量值是否相同。说我有 一个用户做某事,他的全局变量值是1. Will 访问同一页面的第二个用户他的值也是1? 编辑:
  4. 从这里得到建议:我决定使用参考值
  5. 我需要实现的结果是:
  6. 新会话应该具有相同的结果,并且未包含的任何其他文件中的$ name变量不应与此变量相关联。
  7.   

    name:initial vj name:vj name:vj name in file2:vj

    代码:

    <?php 
    
    $name ;
    $name ='initial vj';
    
    echo '<br/>name: ' .$name;
    
    test($name);
    
    function test(&$name)
    {
    
        $name = 'vj';
        echo '<br/>name: ' .$name;
    }
    
    
    echo '<br/>name: ' .$name;
    
    
    include('file2.php');
    
    ?>
    
    <?php
    
    $name;
    
    echo '<br />name in file2: ' .$name;
    
    
    ?>
    

3 个答案:

答案 0 :(得分:1)

全球并不意味着这些变量可供全世界的每个人使用。全局是指该会话中的所有对象。会话不会相互通信。如果他们这样做,那将是一场噩梦。

如果你有一个你需要共享的变量,你应该将它保存在数据库中,并且每个用户都会调用该变量来使用它。

答案 1 :(得分:1)

这个概念被称为&#34;应用范围。&#34; PHP更适合会话,请求或页面范围。要在PHP中的应用程序范围内放置数据,进行数据库调用以获取值时更常见。

我们可以使用$ _SESSION,$ _REQUEST或$ _POST和$ _GET这样的超级全局来将变量分配到会话,请求或页面范围内的一个页面之外。 PHP没有一个通用的,类似的方法来为应用程序范围内的变量赋值。相反,应用程序范围通常通过调用外部数据源(如数据库或文件)来模仿。早期版本的PHP具有一些倾向于应用范围概念的功能,但它们已被弃用。

对于你的问题:

  1. 问题显示了应用范围变量的概念。例如,如果您希望每个用户在index.php上输入一个值并将其写入数据库,则可以在创建将检索该值的file.php期间进行调用。
  2. 我们经常将这种代码写为$ _SESSION变量,而不是一个用户为所有用户执行此操作,一次只能由一个用户使用。我们常常使用数据库写入和数据库读取来解决此类问题。只需记下编写它的用户的价值。为读者提供。

    1. 这是静态应用程序范围变量的概念。要实现此目的,只需让两个用户进行类似的数据库调用即可检索相同的值。
    2. 有一个名为$ GLOBALS的超全局,但它更像是一个用于注释变量命名方式的快捷方式。它不是将应用程序范围带入变量的功能。

      JSP允许通过简单声明使用应用程序作用域变量。 ASP允许通过XML应用程序配置使用应用程序作用域变量。 PHP不会在变量,对象或类的上下文中直接使用应用程序范围。

      php man scope   php man reserved

      jsp application scope   jsp application scope

      ms kb asp application scope variables php man superglobals

答案 2 :(得分:0)

如果你重视自己的理智,不要使用全局变量。有一天,上帝禁止他们像你在想的那样。

是的,在index.php中声明的全局变量在file.php中可用。这就是问题的开始。假设全局变量的值有误,比如$ myGlobal。

  1. 如果有任何文件可能更改$ myGlobal的变量,您如何知道引入错误值的位置? (考虑到复杂的Web应用程序可能包含数百个,有时数千个文件。)
  2. 您将在什么时候监控$ myGlobal的值以调试您的程序?
  3. 这只是针对全局变量的一点。还有很多其他的。

    如果事情就像你说的那样,如果一个全局变量可以被所有会话共享,那么这个混乱就会更大。感谢上帝和语言设计师,全球变量仅在会话范围内