1

返回用户信息的最佳实践

每次都困扰着我;如何将信息(登录成功,文章更新)返回给用户,尤其是在 OOP 中。(PHP)

  • 用多个 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);
    }
4

1 回答 1

2

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

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

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

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

  • 代码点火器
  • CakePHP
  • 曾德

特别是(这样做的好方法)是 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();
}

这通常会像上面显示的表单一样返回。

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

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

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

正如许多其他人所说,路径取决于您的特定情况。

于 2012-08-17T21:50:08.207 回答