我在 php 中遇到global variable
范围问题。下面是我的代码片段,你能告诉我我做错了什么,是否不需要使用全局变量?
PHP版本是5.3.5
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";
}
}
$login=0;
if(1==1) // same condition define in a.php
{
ECHO "<BR/>inside if".__FILE__;
$login = 1;
}
if($login == 0)
{
echo "out";
}
require_once("a.php");
require_once("b.php");
alpha();
echo "<BR/>".__FILE__;
echo $login;
似乎我的做法是错误的,有什么更好的方法?在这种情况下,是否需要声明任何全局变量? $login
中的b.php
会影响任何变量吗?
注意:if
和a.php
中的{/ strong> b.php
条件相同,但我无法合并。
答案 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”的类,并将有关登录(或一般用户管理)的所有决策和操作集中到该类中。没有理由将其分成多个文件。
我希望我能帮忙。