Обработка ошибок уровня приложения в PHP - PullRequest
1 голос
/ 01 апреля 2012

Мне было интересно, может ли кто-нибудь показать мне хороший способ обработки ошибок в моем приложении 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.
    }
}

Пожалуйста, поделитесь своими мыслями, если это хороший способ создать повторно используемый класс для хранения и отображения ошибок для всего приложения или более подробно знакомится с исключениями и пытается / поймает мой единственный выбор?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2012

Я не могу представить причину создания отдельного класса для такой простой задачи, как эхо нескольких текстовых строк в браузере .
Или я что-то упускаю.

Не вижу смысладля функции даже.

Лично у меня есть в моих шаблонах (где мне это нужно) блок кода, подобный этому

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

, и я нахожу его вполне достаточным

0 голосов
/ 01 апреля 2012

Если вы в ООП, вы должны использовать такие фреймворки, как Zend Framework.В ZF есть помощник для общих сообщений об ошибках / результатах: FlashMessenger

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.flashmessenger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...