Можно ли остановить включение php файла?
Можно ли остановить включение файла в середине файла?
Например, один файл будет содержать:
include('home.php');
и в home.php
, он попытается отменить включение в какой-то момент:
break; // I tried it doesn't work
echo "this will not be output
Я не говорю о exit
, который останавливает все, даже корневой файл. Я просто хочу, чтобы текущий файл был удален из.
Ответы
Ответ 1
Вместо break
используйте return
:
При вызове из глобальной области действия завершается выполнение текущего файла script. Если текущий script файл был include()
ed или require()
ed, тогда управление передается обратно в вызывающий файл.
Ответ 2
Нет. Когда вы включаете или требуете. Этот файл загружается и полностью анализируется. Это не означает, что код в нем выполняется, но он полностью загружен.
Если вы хотите иметь другой поток выполнения этого кода, вам нужно будет использовать некоторые из структур управления.
http://php.net/manual/en/language.control-structures.php
Ответ 3
Что вы можете сделать, это установить флаг в "родительский" script, который ищет включенный script. Если он установлен, он прекратит выполнение раньше, иначе он будет продолжаться как обычно.
Пример:
main.php
<?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
?>