Разбор PHP включает

Я включаю файл init.php, который определяет константы пути. Поэтому, если я включаю init.php в файл ( index.php ), а затем в другой файл ( layout / header.php ) … инициализируется init.php перед добавлением в эти файлы или добавляется в родительский файл и то родительский файл анализируется как целое?

EDIT: почему это важно, потому что init.php определяет переменные пути относительно местоположения, где он разбирается.

Solutions Collecting From Web of "Разбор PHP включает"

На самом деле include и require идентичны во всех, за исключением того, что require будет выполнено с E_ERROR а include будет выдавать предупреждение. Также оба оператора активируются только тогда, когда они фактически исполняются внутри сценария. Таким образом, следующий код всегда будет работать:

 <?php echo "Hello world"; if (0) require "non_existing.php"; 

Ответ на ваш вопрос заключается в том, что index.php будет сначала проанализирован и выполнен. Затем, когда include "init.php" файл init.php анализируется и выполняется в текущей области. То же самое для layout/header.php – сначала будет проанализировано.

Как уже отмечалось, init.php будет проанализирован и исполнен каждый раз, init.php будет вызываться include / require , поэтому вы, вероятно, захотите использовать include_once или require_once .

Подумайте об этом как о копировании в файл в том месте, где он был включен. Используйте require_once или include_once если вы не хотите, чтобы ваши вещи были переопределены.


Нет никакой разницы между включением .php или .txt . Вы можете включить php в .txt файл, и он будет разобран, если у вас есть <?php openning.

Это зависит от того, используете ли вы include или require . С include в родительский текст добавляется текстовое содержимое включенного файла, а затем анализируется все это. Если require чтобы включенный файл был сначала проанализирован, и его содержимое было доступно для среды выполнения, тогда обработка продолжается с разбором остальной части содержащего файла.

Если вы хотите убедиться, что файл инициализации загружается только один раз во время выполнения запроса, используйте require_once чтобы убедиться, что он разобран только один раз, независимо от того, сколько раз вы его вызываете. Это хорошая идея, чтобы попытаться загрузить файл init везде, где вам нужны его константы, но используйте require_once чтобы убедиться, что вы не разбираете его больше времени, чем нужно.