Можно ли остановить включение файла в середине файла?
Например, один файл будет содержать:
include('home.php');
и в home.php
, он попытался бы отменить включение в какой-то момент:
break; // I tried it doesn't work echo "this will not be output
Я не говорю о exit
, который останавливает все, даже корневой файл. Я просто хочу, чтобы из текущего файла выходил.
Вместо break
используйте return
:
return
Если вызывается из глобальной области, то выполнение текущего файла сценария завершается. Если текущий файл сценария был
include()
ed илиrequire()
ed, тогда управление передается обратно в вызывающий файл.
Нет. Когда вы включаете или требуете. Этот файл загружается и полностью анализируется. Это не означает, что код в нем выполняется, но он полностью загружен .
Если вы хотите иметь другой поток выполнения этого кода, вам нужно будет использовать некоторые из структур управления.
То, что вы можете сделать, это установить флаг в «родительском» скрипте, который ищет включенный скрипт. Если он установлен, он прекратит выполнение раньше, иначе он будет продолжаться как обычно.
Пример:
main.php
<?php $_GLOBAL['is_included'] = true; include('somefile.php'); // More stuff here ?>
в<?php $_GLOBAL['is_included'] = true; include('somefile.php'); // More stuff here ?>
somefile.php
<?php // Does some stuff // Stops here if being include()'d by another script if ( isset($_GLOBAL['is_included']) ) { return; } // Do some more stuff if not include()'d ?>