2013-10-14 5 views
1

Это немного сложно объяснить, но я постараюсь изо всех сил.PHP - Остановка выполнения вызывающей функции

Это похоже на код, который я сейчас запускаю.

function func1() 
{ 

    func2() 

} 

function func2() 
{ 

    exit(); 

} 

мне нужно, чтобы быть в состоянии остановить выполнение func1 изнутри func2, но мне нужен лучший способ сделать это, чем выход(). Поскольку вызывающий элемент func1 может выполнять другие операции, я не хочу их останавливать, я просто хочу остановить выполнение func1.

Я знаю, что я мог бы поставить простой оператор if в func1 для определения возвращаемого значения func2, а затем вернуться, если это определенное значение, но это тоже немного грязно.

Так что мой вопрос в том, как я могу остановить выполнение остальной части функции вызывающего абонента изнутри функции?

+0

Выбросить исключение? –

ответ

2

Верните значение и проверьте его.

function func1() 
{ 
    $result = func2(); 
    if ($result === 0) return; 

    // Your func1 code here 
} 

function func2() 
{ 
    if (...) return 1; 
    else return 0; 
} 
+0

И нет, это не считается грязным ... вот как работают функции. –

0

Проверка возвращаемого значения не является беспорядочной. Это стандартная практика. У вас в основном есть два варианта:

  • Проверить возвращаемые значения.
  • Выбросить исключение в func2. Если он не отображается в func1, он будет подниматься выше и останавливать выполнение в обеих функциях.
0

Нет абсолютно никакого способа, которым это будет работать.

Помните: func2() можно называть из ЛЮБОГО, а не только func1(). Откуда вы знаете, что это func1, вы останавливаетесь.

Независимо от того, что заставило вас думать, что прерывание вызывающей функции решит проблему - подумайте еще раз и расскажите нам о более широкой картине для правильного совета.

Смежные вопросы