是否有必要使用全局变量?

时间:2011-10-15 11:19:05

标签: php global-variables

我在 php 中遇到global variable范围问题。下面是我的代码片段,你能告诉我我做错了什么,是否不需要使用全局变量?

  

PHP版本是5.3.5

a.php只会

global $login;
$login = 0 ;
if(1==1) // here is some session checking condition
{
    echo "<BR/>inside if".__FILE__;
    $login = 1 ;
}

function alpha() {
    echo "<BR/>".__FUNCTION__;
    global $login;
    if($login)
    {
        echo "<br/>Login is available";
    }
    else
    {
        echo  "<br/>Login not available";
    }
}

b.php

$login=0;
if(1==1) // same condition define in a.php
{
    ECHO "<BR/>inside if".__FILE__;
    $login = 1;
}
if($login == 0)
{
    echo "out";
}

的login.php

require_once("a.php");
require_once("b.php");
alpha();
echo "<BR/>".__FILE__;
echo $login;

似乎我的做法是错误的,有什么更好的方法?在这种情况下,是否需要声明任何全局变量? $login中的b.php会影响任何变量吗?

注意:ifa.php中的{/ strong> b.php条件相同,但我无法合并。

2 个答案:

答案 0 :(得分:3)

使用函数或基于类的方法。

一个简单的功能就是

function is_logged_in() {
    static $login;
    if (isset($login)) return $login;
    $login = 0;
    if (1 == 1) { // here is some session checking condition
        $login = 1 ;
    }
    return $login;
}

答案 1 :(得分:0)

是的,我同意马丁的意见,你应该尝试上课。

我想补充一点,将这种分离逻辑分成两个文件是错误的。如果它是在$ login上运行,你应该简单地创建类似“Login”的类,并将有关登录(或一般用户管理)的所有决策和操作集中到该类中。没有理由将其分成多个文件。

我希望我能帮忙。