2009-09-03 4 views
2

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

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

ответ

3

На самом деле 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 будет анализироваться и выполняться каждый раз, когда include/require называется, так что вы, вероятно, хотите использовать include_once или require_once.

3

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


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

0

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

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

+1

pingw33 правильный - 'require' и' include' отложить только по степени серьезности отказа. – Guss

+0

Также не выполняется включение текста, каждый файл php анализируется как есть. – pingw33n

Смежные вопросы