duanfu3390 2011-10-15 11:19
浏览 32
已采纳

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

I am facing an issue regarding global variable scope in php. Below is my code snippet, can you tell me what am I doing wrong, and if the use of a global variable is unnecessary?

PHP version is 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;

It seems that my approach is wrong, what's a better method? Is declaring any variable global is necessary in this scenario? Will $login in b.php affect any variable?

note: if condition in both a.php and b.php is same, but i can not combine.

  • 写回答

2条回答 默认 最新

  • duanjiati1755 2011-10-15 21:31
    关注

    Use functions or class based approach.

    A simple function would be

    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条)

报告相同问题?

悬赏问题

  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的