Я подумываю о переопределении методов сохранения / создания / обновления классов ORM в приложении, разрабатываемом с помощью PHP-фреймворка Kohana.
Я хотел бы знать, является ли это хорошей практикой, и каковы будут плюсы и минусы. Моя причина для этого состоит в том, чтобы вынуть весь дублирующий код из контроллера и поместить его в одно место внутри переопределенных методов в модели.
Например. Рассмотрим простое приложение для опросов. с двумя классами ORM - Model_Poll и Model_Choice с отношением один ко многим.
прямо сейчас следующий код будет помещен в контроллер для создания нового опроса, а также для сохранения выбора для него, если он найден в $ _POST
$poll = ORM::factory('poll');
$poll->name = 'some question ?';
$poll->save();
if ($this->request->post('choices')) {
foreach ($this->request->post('choices') as $choice) {
$c = ORM::factory('choice');
$c->name = $choice;
$poll->add($c);
}
}
Я хочу изменить это на следующее
в контроллере,
$poll = ORM::factory('poll');
$poll->name = 'some question ?';
$poll->set_choices($this->request->post('choices'));
$poll->save();
в Model_Poll,
public function create(Validation $validation = null) {
$return = parent::create($validation);
if ($this->_choices) {
foreach ($this->_choices as $choice) {
$c = ORM::factory('choice');
$c->name = $choice;
$this->add($c);
}
}
return $return;
}
public function set_choices($choices) {
$this->_choices = $choices;
}
Этот метод create будет внутренне вызван методом save. Позже, если есть что-то еще, я могу сделать это здесь сам.
Спасибо за любую помощь.