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

发布于 2024-12-09 17:55:40 字数 1088 浏览 0 评论 0原文

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

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;

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

注意: a.phpb.php 中的 if 条件相同,但我无法合并。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

纵性 2024-12-16 17:55:40

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

一个简单的函数是

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;
}

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;
}
故乡的云 2024-12-16 17:55:40

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

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

我希望我有所帮助。

Yes, I agree with Martin, you should try classes.

And I would like to add, that having this kind of separating logic into two files is wrong. If it is operation on $login, you should simply create class like "Login" and concentrate all decisions and operations regarding login (or user management generally) into that class. There is no reason to separate it into multiple files.

I hope I helped.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文