Я включаю файл init.php, который определяет константы пути. Поэтому, если я включаю init.php в файл ( index.php ), а затем в другой файл ( layout / header.php ) … инициализируется init.php перед добавлением в эти файлы или добавляется в родительский файл и то родительский файл анализируется как целое?
EDIT: почему это важно, потому что init.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
чтобы убедиться, что вы не разбираете его больше времени, чем нужно.