Мне было интересно, может ли кто-нибудь показать мне хороший способ обработки ошибок в моем приложении 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, мне кажется overkill .
Я планирую создать новое приложение, и я буду сильно размазывать руки ООП, хотя я уже сделал приложения, использующие ООП, но на этот раз я планирую пойти еще глубже и использовать ООП-подход больше экстенсивно.
Я имею в виду что-то вроде этого, хотя это просто базовый класс, я буду добавлять к нему дополнительные детали по мере того, как я углубляюсь и углубляюсь в свое приложение, чтобы увидеть, что ему нужно.
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.
}
}
Пожалуйста, поделитесь своими мыслями, если это хороший способ создать повторно используемый класс для хранения и отображения ошибок для всего приложения или более подробно знакомится с исключениями и пытается / поймает мой единственный выбор?