php - 处理 PHP 中的应用程序级错误

标签 php oop class error-handling

我想知道是否有人可以向我展示一种处理我的 PHP 应用程序中的错误的好方法,我也可以很容易地在我的其他脚本中重用它。

到目前为止,我一直在使用以下功能:

内联错误

function display_errors_for($fieldname) {
    global $errors;

    if (isset($errors[$fieldname]))
    {
        return '<label for="' .$fieldname. '" class="error">' . ucfirst($errors[$fieldname]). '</label>';
    } else {
        return false;
    }
}

所有错误
function display_all_errors($showCounter = true) {
    global $errors;

    $counter = 0;
    foreach ($errors as $errorFieldName => $errorText)
    {
        if ($showCounter == true)
        {
            $counter++;
            echo '<li>' . $counter . ' - <label for="' .$errorFieldName. '">' .$errorText. '</label></li>';
        } else {
            echo '<li><label for="' .$errorFieldName. '">' .$errorText. '</label></li>';
        }
    }
}

我有一个 $errors = array();在我的全局文件顶部定义,因此它被附加到所有文件中。

我使用它的方式是,如果遇到错误,我将新的错误键/值推送到 $errors 数组持有者,如下所示:
if (strlen($username) < 3) {
    $errors['username'] = "usernames cannot be less then 3 characters.";
}

这一切都很好,但我想知道是否有人对此有更好的方法?上课?我不认为我想使用带有 try/catch 的异常似乎是 矫枉过正对我来说。

我正计划制作一个新的应用程序,并且我会大量使用 OOP,尽管我已经使用 OOP 制作了应用程序,但这次我计划更深入并更广泛地使用 OOP 方法。

我想到的是这样的,虽然它只是一个基本类,但随着我在我的应用程序中越来越深入地了解它需要什么,我将向它添加更多细节。
class Errors
{
    public $errors = array();

    public function __construct()
    {
        // Initialize Default Values

        // Initialize Methods
    }

    public function __destruct()
    {
        //nothing here too...
    }

    public function add($errorField, $errorDesc)
    {
        if (!is_string($errorField)) return false;
        if (!is_string($errorDesc)) return false;
        $this->errors[$errorField] = $errorDesc;
    }
    public function display($errorsArray)
    {
        // code to iterate through the array and display all errors.
    }
}

请分享您的想法,如果这是创建可重用类来存储和显示整个应用程序错误的好方法,还是越来越熟悉异常并尝试/捕获我唯一的选择?

最佳答案

我无法想象为将几个文本字符串回显到浏览器中这样微不足道的任务创建一个独特的类的原因。
或者我错过了一些东西。

我什至认为该功能没有意义。

我个人在我的模板(我需要它的地方)中有这样的代码块

<? if ($data['errors']): ?>
<div class="errors">
  <ul>
<?   foreach ($data['errors'] as $e): ?>
    <li><?=$e?></li>
<?   endforeach ?>
  </ul>
</div>
<? endif ?>

并发现它足够

关于php - 处理 PHP 中的应用程序级错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966404/

相关文章:

java - 用 java 写一个 OOP

delphi - 创建指向类的新指针

python - 为什么 self 不用于类方法之外的类变量?

php - 切换订阅 - 直接添加到购物车

php/mysql 按第一个字符分组列表

c++ - 如何在类的方法参数中访问类私有(private)数据成员,我收到错误无效使用非静态数据成员

php - PHP 子类可以更改重写方法的参数吗?

java - 如何从 CSV/Map 实例化 Scala 对象

javascript - 登录失败时不刷新

php - 如果连续少于 3 个,则动态将 bootstrap 更改为中心