Я только что переработал php-страницу, чтобы ее было легче расширять и поддерживать в будущем, и застрял на довольно простой проблеме.
Я разбил один метод на 3.
largemethod () стал примерно таким:
nowsmallmethod(){
doSomeChecks();
assignProduct();
giveFeedbacktoUser();
}
Это все хорошо, проблема у меня с doSomeChecks ();
doSomeChecks(){
if(something that shouldnt be true is true){
return Controller->redirectBk();
}
}
Суть проблемы в том, что Controller-redirectBk сначала перенаправляет, когда nowsmallmethod () завершен. Это означает, что пользователю назначен продукт, даже если тест не пройден. Я использую php-фреймворк под названием Silverstripe, поэтому я не могу реально изменить поведение Controller-> redirectBk (). Если бы у меня не было проверок в их собственном методе, тогда все работало бы нормально, потому что "return Controller-> redirectBk ();" остановит выполнение и перенаправит обратно. Каков лучший способ остановить выполнение в nowsmallmethod (), если тест не пройден? Я понимаю, что могу вернуть код состояния для ошибки, а затем остановить выполнение, но это кажется уродливым способом. Разве нет более элегантного способа? Другой вариант был бы, если бы я мог вернуть что-то подобное в doSomeChecks (), «return (return $ controller-> redirectBk ())», но это неверный синтаксис php и не особенно легко читается. Любая помощь будет принята с благодарностью.
Приятных выходных!
ура
Ник