Я начинаю ставить валидацию/дезинфекцию в своих моделях codeigniter, а перед погружением в глубокие глубины я искал некоторые рекомендации по лучшим практикам. библиотека для контроллеров form validation
великолепна, но, очевидно, я не хочу полагаться на контроллеры, чтобы отправлять мне хорошие данные.Как я должен обрабатывать ошибки в моих моделях Codeigniter?
В настоящее время я возвращаю значения bool, TRUE (или данные) при успешном завершении, FALSE при сбое, что очень затрудняет передачу сообщений об ошибках вызывающему абоненту. Я хотел бы уйти от ЛОЖНОСТИ при неудаче.
В то время как определенно не эксперт, я немного начал читать об исключениях и натолкнулся на них довольно много с внешними библиотеками, и они кажутся хорошим кандидатом на это. мой вопрос в том, является ли это целесообразным использование исключений? Ошибки модели ошибок?
возможный пример:
<?php
class person_model extends CI_Model{
public function getPersonById($personId){
//check for int
if(!is_int($personId) OR $personId < 0){
throw new Exception('Invalid person ID');
}
//setup query
$this->db->select('*')
->where('personId', $personId);
//run query
$result = $this->db->get('person');
//failed to get
if(!$result){
throw new Exception('DB query failed');
//should i also return false?
return FALSE;
}
//got info
else{
return $result;
}
}
}
?>
спасибо за помощь!
EDIT:
Я должен сказать, что я весьма удивлен ответами предполагая, что проверка данных должно быть сделано только в контроллере. Модели - последний барьер для хранения данных. Модель - это данные и правила, применяемые к этим данным, ваша логика приложения. Проверка данных кажется мне логикой приложений. Также у вас может быть много контроллеров, получающих доступ к одному и тому же методу модели. Вы хотите полагаться на оба контроллера, выполняющих ту же проверку? Мне это кажется глупым.
Кроме того, не все данные поступают с пользовательского ввода, некоторые из них могут быть жестко закодированы в сценарий вашим программистом, пишущим контроллер. Что делать, если они передают строку, когда ваша модель ожидает целое число? Или передать неверно отформатированную дату? не должна ли модель говорить об этом.
Я открыт для обсуждения, но я считаю, что проверка данных ОТНОСИТЕЛЬНО относится к модели. (В дополнение к контроллеру, и даже представления (html5/JavaScript для удобства))
ваши модели не должны содержать проверку, оставьте это на контроллерах и обратитесь к моменту dels для чистых данных. – Jakub
Эндрю, ваши модели должны быть чистыми данными, их необходимо проверить перед моделью. Модель - это ваши данные, это не ваша логика, контроллер управляет этим. – Jakub
вы сказали: «Да, я широко использую их в своих контроллерах, но они не созданы для моделей, поскольку они ищут данные POST». Это не совсем так, поскольку вы можете использовать валидацию формы CI в модели - она работает точно так же так же. this-> input-> post также доступен в модели. – cartalot