返回用户信息的最佳做法


Best Practice to return user information

返回用户信息的最佳实践

每次它困扰我;如何将信息(登录成功,文章更新)返回给用户,特别是在OOP中。(菲律宾比索)

  • 抛出具有多个 catch 和 try 块的新异常(catch 后它将停止 catch 块的执行)
  • 只是一堆返回值(看起来很糟糕)
  • 和假(然后在运行类的脚本中检查真假?
  • 分隔类来处理错误消息(扩展异常?

任何提示将不胜感激!

-- 更新/不斩出这么多答案! 哇!!

例如用户注册;我使用了自定义异常类。

/*
 * custom exception class
 */
class Message extends Exception
{
    public function __construct($message, $code = true) 
    {       
        parent::__construct($message, $code);
    }
    public function information() 
    {
        return '<div class="check"><img src="/admin/static/images/'.($this->code == true ? 'good' : 'bad').'.gif" alt="check" class="icon" width="20px" height="20px" />' . $this->message . '</div>';
    }
}

在课堂本身;

    if(is_numeric($id) === false)
    {
        Throw new Message('message', false);
    }

抛出具有多个 catch 和 try 块的新异常(catch 后它将停止 catch 块的执行)

异常可能代价高昂,异常通常表示应用程序本身的问题,如 cURL 错误,而不是用户出错或未正确登录那么简单。我会保留您应用程序中实际问题的例外情况,并仅向您报告。

只是一堆返回值(看起来很糟糕)

取决于如何执行这些返回值。看看PHP框架是如何做到的:

  • 代码点火器
  • 奕妖
  • 蛋糕菲律宾比索
  • 赞德

特别是(一个很好的方法)是Yii自己的用户登录处理程序:http://www.yiiframework.com/doc/api/1.1/CUserIdentity

您会注意到它们具有基于类的错误代码和消息。

你会发现很多这些框架使用基于模型/控制器的表单模式,这意味着你定义了一组验证规则(即使是登录用户,就像在 Yii 中很多时候身份验证是基于类的),这些验证规则会填充附加到这些规则的错误消息。最终你会得到一个数组,如下所示:

array{
    'username' => 'Username was empty',
    'password' => array(
        // More errors
    )
}

这表示您的所有返回值。它既漂亮又整洁,因为它是每个字段的错误,并且它们也很容易在循环中访问和操作。

对于实际多次登录用户,您将运行如下内容:

if($user->authenticate()){
    // redirect to member page
}else{
    return $user->getErrors();
}

而这个的返回通常是类似于上面显示的表单。

和假(然后在运行类的脚本中检查真假?

当涉及到多个错误时,真和假非常模糊,例如:- 用户登录,但他们的帐户可以被删除或禁止。你如何通过布尔值来区分?

其他人/框架,如 Lithium (例如)返回每个验证函数的布尔值,然后将其附加到错误消息持有者。

正如许多其他人所说,路径归结为您的特定情况。