Текст ошибок в компоненте Model (MVC)

Nicki

Новичок
Текст ошибок в компоненте Model (MVC)

По идиологии MVC модель должна быть полностью отделена от представления. Значит ли это, что тексты ошибок возникающие в модели, не должны хранится в модели? И если не должны, то как правильнее?

Вот пример модели статьи.
PHP:
class Article
{
    private $id = 0;    
    private $title = null;
    private $text = null;

    private $errors = array();

/**
* Если есть ошибки то возвращает true
* @return array
**/
public function isErrors() { return (0 != sizeof($this->errors)); }    

/**
* Возвращает массив с текстом ошибок
* @return array
**/
public function getErrors() { return $this->errors; }    

/**
* Устанавливает заголовок статьи
* 
* @param string $arg Заголовок статьи
* @return bool
**/
public function setTitle($arg) 
{
    if ($this->_isValidTitle($arg))
    { 
        $this->title = $arg;
        return true;
    } else $this->errors['title'] = 'не верный формат заголовка статьи';
    return false;
}    

} // class
 

С.

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

Текстов штатных ошибок в модели конечно не должно быть. Например локализация приложения должна затрагивать только шаблоны и ничего другого. Можно ввести коды ошибок и расшифровывать их в представлении.
 

kode

never knows best
Правильнее я считаю кидать исключения
А хранить тексты ошибок....мммм...можете задействовать модели для их получения, те

throw new ControllerException(new ErrorLocator("Article not found"));
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я по старинке делаю - по тексту эксепшены с номерами ошибок, а в отдельном файле массив соответствий
 

iSlayter

Новичок
у меня прямо в контроллерах тексты :(
отрывок из ValidateRegForm();
PHP:
if (empty($this->errors['wmr']) && !preg_match('/R([0-9]{12})/i', trim($_POST['wmr'])))
$this->errors['wmr'] = 'Вы указали некорректный номер рублёвого кошелька Web-money. 
Запишите его так, как показано в примере чуть выше.';
            
if (!empty($_POST['url']) && !$this->validator->provider('url', $_POST['url'], array(10, 255)))
$this->errors['url'] = 'Необязательно указывать ссылку на сайт, но, если Вы решили это сделать, 
то Вы должны записать ссылку в формате, указаном чуть выше.';
            
if (!empty($_POST['phone']) && !$this->validator->provider('phone', $_POST['phone']))
$this->errors['phone'] = 'Вам необязательно заполнять поле с номером телефона, но, если
 Вы решили это сделать, то Вы должны записать телефонный номер в формате, указаном чуть выше.';
 
Сверху