Я пишу модель CRUD (Create Read Update Delete) в структуре CI (CodeIgniter).
В целях безопасности и в соответствии с парадигмой MVC я спрашиваю, должна ли моя Модель отправлять возможные сообщения об ошибках MySQL такими, какими они являются, на контроллер, когда они происходят, зная, что они могут содержать имена таблиц или столбцов, или я «сопоставлю» эти ошибки внутри модели и общаться с контроллером с моей правильной обратной связи.
В производстве пользователь должен видеть только основные сведения об ошибках. Только в разработке вы можете отобразить все ошибки для их устранения. По моему мнению, нет необходимости показывать пользователям структуру таблицы и отдыха …
Вы не хотите показывать конечному пользователю какие-либо журналы ошибок или предлагать им причину сбоя запроса.
Достаточно простого сообщения об ошибке
$this->session->set_flashadata('error', 'An error occured, please contact an admin!');
class Model extends CI_Model
{
/**
*
* @return mixed Object if query is true, false otherwise
**/
public function method()
{
$query = $this->db->query("YOUR QUERY");
// conditional behavior
if($query->num_rows() > 0)
return $query->result();
// default behavior
log_message('error', $this->db->_error_message());
//might also be useful to email an admin to notify him
return false;
}
}
class Controller extends CI_Controller
{
protected $model;
public function __construct()
{
parent::__construct();
$this->model = $this->load->model('Model');
}
public function method()
{
if(!$this->model->method()){
$this->session
->set_flashadata('error', 'An error occured, please contact an admin!');
}
else{
$this->session
->set_flashadata('success', 'Good job!');
}
return redirect('/');
}
}