返回一些以及FALSE

Joh*_*ohn 2 php

我正在构建一个库,我想知道如果有可能以及如何在这里完成最佳方法:基本上我想要根据类中的结果显示一些不同的消息.

伪:

public function login($username, $password) {
    //query

    if (password hash is verified)

        if (active == false)
            (some sort of MESSAGE HERE! like "User is not activate...")
            return false

        if banned
            some sort of message
            return false
    else

        message (wrong username or password)
        return false
}

And then on the login

if (login(username, password))
    successfully
    redirect
else
    display the message
Run Code Online (Sandbox Code Playgroud)

如何以一种好的方法实现这一点?我假设我需要某种变量,我会给出一个值然后我会有一些方法()如果设置了将返回错误消息,我到目前为止是否正确?我该怎么办?

Chr*_*heD 5

某些语言中(例如Python,通过异常处理对结构化程序流进行了很好的优化并且通常被接受),您可以使登录返回没有值但是使用描述性错误代码抛出相关异常.

然后伪代码你可以这样做:

try
{
    login(user, password);
    redirect(page);
}
catch (MyLoginException ex)
{
    displayMessage();
}
catch (GenericException ex)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这只适用于某些语言.例如,对于C或C++,这是不可取的,因为异常处理非常慢,因此应保留用于处理unexcepted情况.PHP看起来几乎在同一条船上.

因此,由于您希望返回两个值(布尔值和字符串),因此逻辑操作过程就是返回一个compound带有布尔值和字符串字段的LoginResult对象.

从login方法返回LoginResult对象的新实例,并使用它的字段来处理重定向和/或显示错误消息.

  • 当某些事情"不应该发生?"时,不是例外吗? - 那种情况?像这样应该不会发生,好像pdo语句不会被执行?这是一个用户问题,例如,用户名输入正确的用户名和密码,但用户不活动,给出错误(用户不会登录),然后有一些消息,如"用户实际上不是激活",还是我骑自行车? (3认同)