Я нахожусь в процессе рефакторинга моего приложения Laravel 4, и я хотел бы получить совет по моему подходу и лучшей практике в будущем. Я стараюсь быть как можно сухим, а также следовать принципам SOLID.Рефакторинг Laravel 4 App
У меня есть метод обновления, который обновляет делегаты в моем приложении. Существует много разных отношений между делегатами и событиями, и мне нужно проверить, выполняется ли несколько условий при обновлении, чтобы выполнить правильное действие/функцию.
Например, то, что я до сих пор проверяет, является ли делегат плавающим делегатом, который не назначен для события, а если ему требуется, тогда необходимо проверить емкость события, емкость и емкость экзамена, а также проверить выбрано ли событие для перемещения делегата.
public function update($id)
{
$delegate = $this->delegate->findById($id);
$input = Input::all();
if ($delegate->isFloater())
{
if (empty($input['new_event_id']))
{
$message = (object) array(
'title' => 'Oops!',
'content' => 'You did not select an event to move this floating delegate to.',
'alert_type' => 'error'
);
return Redirect::back()->withInput()->with('message', $message);
}
$newEvent = $this->event->findById($input['new_event_id']);
if (! $newEvent->hasCapacity())
{
$message = (object) array(
'title' => 'Oops!',
'content' => 'The event you are trying to move this floating delegate to has no availability.',
'alert_type' => 'error'
);
return Redirect::back()->withInput()->with('message', $message);
}
if (! $newEvent->hasResitCapacity($input))
{
$message = (object) array(
'title' => 'Oops!',
'content' => 'The event you are trying to move this floating delegate to has no resit spaces left.',
'alert_type' => 'error'
);
return Redirect::back()->withInput()->with('message', $message);
}
if (! $newEvent->hasExamCapacity($input))
{
$message = (object) array(
'title' => 'Oops!',
'content' => 'The event you are trying to move this floating delegate to has no exam spaces left.',
'alert_type' => 'error'
);
return Redirect::back()->withInput()->with('message', $message);
}
$this->delegate->moveFloater($id, $input, $newEvent);
$message = (object) array(
'title' => 'Excellent!',
'content' => 'This floating delegate was successfully moved.',
'alert_type' => 'success'
);
return Redirect::to('admin/events')->with('message', $message);
}
}
Это, конечно, гораздо лучше, чем я был раньше, и я абстрагирование код для различных модельных методов, таких как hasCapacity() и isFloater() и т.д., но уже метод является большим, и я повторяю код относится к сообщениям и перенаправлениям.
На данный момент я не уверен, как лучше всего подойти к этому, и я ищу несколько советов о том, как действовать дальше и очищать его дальше.
Любая помощь будет высоко оценена. Заранее спасибо.
Андреас, это действительно помогло мне разобраться. Я очень ценю ваши усилия. Спасибо друг. –
Один вопрос, хотя помощник, как это работает $ error = $ this-> delegate-> getError(); Откуда возникает ошибка? –
Получил это все работает сейчас. Я просто установил свойство $ error - this-> error в моей модели, как вы предложили. Благодарю. –