当前位置:  开发笔记 > 编程语言 > 正文

php中的全局变量未按预期工作

如何解决《php中的全局变量未按预期工作》经验,为你挑选了2个好方法。

我在php中遇到全局变量问题.我$screen在一个文件中有一个var set,它需要另一个文件来调用另一个文件中initSession()定义的文件.该initSession()声明global $screen,然后进一步处理$屏幕下使用非常的第一个脚本设置的值.

这怎么可能?

为了让事情更加混乱,如果你试图再次设置$ screen然后调用它initSession(),它会再次使用第一次使用的值.以下代码将描述该过程.有人可以解释一下吗?

$screen = "list1.inc";            // From model.php
require "controller.php";         // From model.php
initSession();                    // From controller.php
global $screen;                   // From Include.Session.inc  
echo $screen; // prints "list1.inc" // From anywhere
$screen = "delete1.inc";          // From model2.php
require "controller2.php"         
initSession();
global $screen;
echo $screen; // prints "list1.inc" 

更新:
如果我$screen在要求第二个模型之前再次声明全局,则会为该initSession()方法正确更新$ screen .奇怪.



1> e-satis..:

Global不要使变量全局化.我知道这很棘手:-)

Global表示将使用局部变量,就好像它是具有更高范围的变量一样.

EG:


请注意,全局变量很少是一个好主意.如果没有模糊范围,您可以在没有它们的情况下编码99.99999%的时间,并且您的代码更容易维护.global如果可以,请避免.



2> Athena..:

global $foo并不意味着"使这个变量全局化,以便每个人都可以使用它".global $foo表示" 在此函数的范围内,使用全局变量$foo".

我假设从你的例子中,每次,你指的是函数内的$ screen.如果是这样,您将需要global $screen在每个功能中使用.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有