У меня есть функция, которая обрабатывает запрос, и другая функция, которая возвращает конкретный ответ.Должен быть лучший способ / лучший метод для решения этой проблемы, однако я не уверен.
$isResponseForm = $this->getIsResponseForm();
$formResponse = null;
switch ($this->formId) {
case 'start':
$formResponse = $isResponseForm ? $this->start() : $this->_start();
$this->formId = $this->session->get('checkout_item.registration.has_penalty') ? 'late' : 'start';
break;
case 'late':
$formResponse = $isResponseForm ? $this->late() : $this->_late();
$this->formId = 'start';
break;
case 'search':
$formResponse = $isResponseForm ? $this->search() : $this->_search();
$this->formId = $this->session->exists('change.address') ? 'verify' : 'review';
break;
case 'verify':
$formResponse = $isResponseForm ? $this->verify() : $this->_verify();
$this->formId = 'address';
break;
case 'address':
$formResponse = $isResponseForm ? $this->address() : $this->_address();
$this->formId = 'review';
break;
case 'review':
$formResponse = $isResponseForm ? $this->review() : $this->_review();
break;
case 'confirmation':
$formResponse = $isResponseForm ? $this->confirmation() : null;
break;
default:
$this->processor->errorLog->add('Invalid FormID: ' . $this->formId);
$this->form->addError('An unknown error occurred (' . $this->processor->errorLog->getLastId() . ')');
}
if (!$isResponseForm) {
$this->setIsResponseForm(true);
return $this->processForm(); // restart the switch statement
}
return $formResponse;
$isResponseForm
устанавливается в true после первой итерации.функции с префиксом подчеркивания _
предназначены для обработки, а функции без обработки ответа.
protected function start(): Form
{
$checkoutItem = $this->session->get('checkout_item');
$options = (new Collection($checkoutItem['options']))->sortBy('value');
$this->form->setFormId('search');
$this->form->header(
'FIGURE LENGTH',
'FigLengthHeaderSlug'
);
$this->form->checkbox(
'Change my Address',
'address_change'
);
return $this->form;
}
Пример:
- Шаг 1:
$this->_start();
- Шаг 2:
return $this->start();
У меня они были в той же функции, но это было грязно, и я решил разделить их.