2014-11-07 2 views
0

Это фиктивный пример. И я хочу понять: «Что действительно происходит при использовании EXIT в этом коде»:Использование выхода внутри IF: структура управления ENDIF

function my_template_redirect() { 
    $page = get_query_var('pagename'); //get some value 
    if ($page == 'products'): //compare with something 
     //show products 
     EXIT; 
    elseif ($page == 'product'): //compare "else" 
     //show product 
     EXIT; 
    endif; 
} 
add_filter('template_redirect', 'my_template_redirect'); 

Ok. Шаг за шагом выполнить (моя собственная логическая версия)

|-code executing 
|-filter callback my_template_redirect() 
|-if start (or else) 
    |-exit 
    |-start execute new template 

Что произойдет после вызова EXIT? Структура управления IF: ENDIF автоматически закрывается? Или все еще открыт в новом коде? Это плохой способ организовать код?

Заранее благодарен!

PS Я использую пример WP для лучшего понимания моего плохого английского :)

+0

'exit' завершает сценарий. Ничего не может произойти «после» вызова 'exit', потому что сценарий мертв. например RTFM: http://php.net/exit –

+1

Вероятно, вам лучше использовать 'return' в этих случаях. – rnevius

ответ

1

Если вы читали PHP docs on exit(), вы обнаружите, что exit полностью завершает текущий скрипт.

Однако:

Shutdown функции и объект деструкторы всегда будет выполняться, даже если выход называется.

+0

Я знаю это. Что относительно IF: ENDIF? –

+0

Как насчет этого ...? – rnevius

+0

Как я уже говорил, использование 'exit' в вашем примере выше полностью прекратит выполнение скрипта. Не имеет значения, находится ли он в 'if' или' endif'. Функция просто перестает работать. – rnevius

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