A análise do PHP inclui

Estou incluindo um arquivo init.php que define as constantes do caminho. Então, se eu include init.php em um arquivo ( index.php ) e depois em outro arquivo ( layout / header.php ) … init.php foi analisado antes de ser adicionado a esses arquivos ou ele é adicionado ao arquivo pai e então o arquivo pai é analisado como um todo?

EDIT: Por que isso é importante é porque init.php define variables ​​de caminho em relação à localização de onde é analisada.

Na verdade, include e require são idênticos em todos, exceto require , falharão com o E_ERROR enquanto a include emitirá um aviso. Além disso, ambas as declarações só são ativadas quando executadas no script. Então, o código a seguir funcionará sempre:

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

A resposta à sua pergunta é que index.php será analisado primeiro e executado. Então, quando include "init.php" encontrado o arquivo init.php é analisado e executado dentro do escopo atual. O mesmo para layout/header.php - será analisado primeiro.

Como já notou init.php será analisado e executado cada vez que o include / require é chamado, então você provavelmente irá querer usar include_once ou require_once .

Pense nisso como sendo colado em cópia no arquivo na posição onde foi incluído. Use require_once ou include_once se você não deseja que suas coisas sejam redefinidas.


Não há diferença entre include um .php ou um .txt . Você pode include php em um arquivo .txt e será analisado, desde que você tenha a tag < ?php openning.

Depende se você usar include ou require . Com include o conteúdo do texto do arquivo incluído é adicionado ao pai e, em seguida, o conjunto é analisado. Com o require o arquivo incluído é analisado pela primeira vez e seu conteúdo disponibilizado para o tempo de execução, então o processamento continua com a análise do resto do arquivo contendo.

Se você quiser certificar-se de que o arquivo de boot só é carregado uma vez no tempo de execução de uma solicitação, use o require_once para garantir que ele seja analisado apenas uma vez, independentemente de quantas vezes você o chamar. É uma boa idéia tentar carregar seu arquivo de boot em todos os lugares em que você precisa de suas constantes, mas use require_once para garantir que você não analise mais vezes, então é necessário.