使用相同的功能有两个目的

时间:2014-07-02 19:49:39

标签: php function session return-value

我有一个名为isLoggedIn()的函数 - 根据用户是否登录返回FALSETRUE。它通过检查用户数据是否在会话中设置来完成此操作。

我有另一个名为getUserSession()的函数,它在会话中获取并返回用户数据。我的问题是:两者合并都可以吗?

我的意思是isLoggedIn()已经在访问会话值,所以如果我在函数中返回它,那么我就这样使用它:

//when I need session data
$user = isLoggedIn();
echo "Hello ".$user['name'];

//when I need to check if user is not logged in
if(!isLoggedIn())
{
 echo "Please login to proceed!";
}

这种方法有问题吗?我的同事说我不应该合并它们,但我不知道这里有什么问题......

4 个答案:

答案 0 :(得分:1)

如果要合并他们会做这样的事情

if($user = isLoggedIn())
{
 echo "Hello ".$user['name'];
} else {
 echo "Please login to proceed!";
}

答案 1 :(得分:0)

您可以合并它们,但是您需要某种值来对应未登录的人。例如,如果您有一个名为getUserSession()的函数,它只返回$_SESSION['User']您可能想要实现它类似于:

function getUserSession() {
    return isset($_SESSION['User']) ? $_SESSION['User'] : NULL;
}

现在NULL将代表无效会话(用户未登录)。您所要做的就是检查您的会话是否为NULL并且您知道用户未登录。

$user = getUserSession();
if ($user != NULL) {
    //Stuff here with a valid session
} else {
    //Do stuff if the user is not logged in
}

答案 2 :(得分:0)

是的,您当然可以合并这些功能。如果用户不存在,则返回false,如果用户存在则返回userdata,您可以按照问题中的显示使用它

事实上,如果可能的话,应该这样做,因为如果发生任何变化,更容易更改和维护代码。

您应该考虑一件事 - 如果您在此功能中执行任何可能影响您的性能的操作 - 例如查询数据库。在这种情况下你可能应该使用某种缓存,但是如果每次检查用户是否都没有登录,你就会查询数据库以获取用户数据/在数据库中进行任何检查,这可能会导致性能下降。

答案 3 :(得分:0)

关注的是,如果您碰巧返回任何可以评估为false的内容。其中包括0,空字符串"false",一个空数组,其中一些可能是有效的会话值。例如,如果您没有会话值,那么它将返回一个空数组(或空字符串),这将评估if(!isLoggedIn())为真。