Ошибка «отчетности» в модели - PullRequest
0 голосов
/ 11 марта 2012

Я думаю о возвращении ошибок, которые произошли внутри модели, следующим образом:

class Data extends CI_Model {  
     private $errors_list

     private function Set_error($control,$error_string){
          $this->errors_list[][$control] = $error_string; 
     } 

     public function Get_errors($control){
          // logic
          return $errors_array;
     }

     public function Data(){
          // error happens
          $this->set_error('User','Your db seems to be empty!');
          $this->set_error('Dev','// DB error in full');
          return false;
     }
}

Таким образом, я могу обработать их на контроллере:

class Data extends CI_Controller {
     public function index(){
          $this->load->model('Data');
          $data = $this->data->data();
          if(!$data)
          // send $this->data->get_errors() to user and logs
          else
              // send $data to view
     }
}

Это хорошая идея? Каковы потенциальные недостатки и есть ли лучший способ лечения ошибок операций с БД / проверки данных?

Новые "доказательства": http://www.firehed.net/mvc-model-data-validation

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

@ localhost2 Твой путь имеет смысл. На самом деле ошибка проверки модели должна принадлежать модели. Контроллер не должен сохранять какой-либо список ошибок, кроме флэш-сообщений (т. Е. Успешно ...). Поэтому сохраните ошибки в модели и отправьте модель для просмотра, а на стороне просмотра вы можете извлечь ошибки.

0 голосов
/ 11 марта 2012

CRUD для модели.Что было бы лучше - это заставить модель выдать исключение обратно в контроллер.Контроллер ловит его и делает все, что нужно.

Модель:

class Data_model extends CI_Model {  
    public function getData($id){
        if( /* something worthy of an error */) {
            throw new Exeption('Your db seems to be empty!');
        }    
    }
}

Контроллер:

class Data extends CI_Controller {
    public function index(){
        $this->load->model('Data_model','', 'data');
        try {
            $data = $this->data->getData();
        } catch (Exception $e) {
            // send $e->getMessage() to user and logs
        }
        // send $data to view
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...