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, он поднимется выше и остановит выполнение в обеих функциях.
Другие вопросы по тегам