【发布时间】:2012-04-01 17:12:23
【问题描述】:
我想知道是否有人可以向我展示一种在我的 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.
}
}
如果这是创建可重用类来存储和显示整个应用程序错误的好方法,或者更熟悉异常并尝试/捕获我唯一的选择,请分享您的想法?
【问题讨论】:
-
异常并不复杂,您应该熟悉它们 - 最终,它们很可能会简化您的代码。
标签: php oop class error-handling