Можно ли остановить включение php-файла? - PullRequest
13 голосов
/ 08 декабря 2011

Можно ли остановить включение файла в середине файла?

Например, один файл будет содержать:

include('home.php');

и в home.php он попытается отменить включение в некоторый момент:

break; // I tried it doesn't work
echo "this will not be output

Я не говорю о exit, который останавливает все, даже корневой файл. Я просто хочу, чтобы текущий файл был завершен.

Ответы [ 3 ]

30 голосов
/ 08 декабря 2011

Вместо break, используйте return:

return

Если вызывается из глобальной области, выполнение текущего файла сценария заканчивается. Если текущий файл сценария был include() ed или require() ed, управление передается обратно в вызывающий файл.

5 голосов
/ 08 декабря 2011

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

Если вы хотите иметь другой поток выполнения этого кода, вам нужно будет использовать некоторые из структур управления.

http://php.net/manual/en/language.control-structures.php

4 голосов
/ 08 декабря 2011

Что вы можете сделать, это установить флаг в «родительском» скрипте, который ищет включенный скрипт. Если он установлен, выполнение будет остановлено досрочно, в противном случае оно продолжится как обычно.

Пример:

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
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...