PHP - остановка выполнения вызывающей функции
Это немного сложно объяснить, но я буду стараться изо всех сил.
Это похоже на код, который я сейчас выполняю.
function func1()
{
func2()
}
function func2()
{
exit();
}
Мне нужно иметь возможность остановить выполнение func1 из func2, но мне нужен лучший способ сделать это, чем exit(). Поскольку у вызывающей функции func1 могут быть другие операции, я также не хочу их останавливать, я просто хочу остановить выполнение остальных функций func1.
Я знаю, что я мог бы поместить в ifc простой оператор if, чтобы определить возвращаемое значение func2, а затем вернуть, если это определенное значение, но это тоже немного беспорядочно.
Итак, мой вопрос, как я могу остановить выполнение оставшейся части функции вызывающей стороны изнутри функции?
3 ответа
Верните значение и проверьте его.
function func1()
{
$result = func2();
if ($result === 0) return;
// Your func1 code here
}
function func2()
{
if ( ... ) return 1;
else return 0;
}
Нет абсолютно никакого способа, которым это будет работать.
Помните: func2()
можно звонить из любого места, не только func1()
, Как бы вы узнали, что это остановка?
Все, что заставило вас думать, что прерывание вызывающей функции решит проблему - подумайте еще раз и расскажите нам о более широкой картине для правильного совета.
Проверка возвращаемого значения не грязная. Это стандартная практика. У вас есть два варианта:
- Проверьте возвращаемые значения.
- Брось исключение в func2. Если он не обработан в func1, он поднимется выше и остановит выполнение в обеих функциях.