我正在构建一个库,我想知道如果有可能以及如何在这里完成最佳方法:基本上我想要根据类中的结果显示一些不同的消息.
伪:
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)
如何以一种好的方法实现这一点?我假设我需要某种变量,我会给出一个值然后我会有一些方法()如果设置了将返回错误消息,我到目前为止是否正确?我该怎么办?
在某些语言中(例如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对象的新实例,并使用它的字段来处理重定向和/或显示错误消息.