我包括一个文件init.php定义路径常量。所以,如果我有的init.php在一个文件中(的index.php),然后在另一个文件(布局/ header.php文件)......是的init.php被添加到这些文件或之前解析它被添加到父文件,然后父文件被作为一个整体进行分析?PHP解析包括
编辑:为什么这很重要是因为init.php定义路径变量相对于它被解析的位置。
我包括一个文件init.php定义路径常量。所以,如果我有的init.php在一个文件中(的index.php),然后在另一个文件(布局/ header.php文件)......是的init.php被添加到这些文件或之前解析它被添加到父文件,然后父文件被作为一个整体进行分析?PHP解析包括
编辑:为什么这很重要是因为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
将被解析,每次include
/require
被称为执行,所以你可能会想使用include_once
或require_once
。
认为它被复制粘贴到文件所在的位置。如果你不想让你的东西重新定义,请使用require_once
或include_once
。
有包括.php
或.txt
之间没有差别。你可以在一个.txt
文件中包含php,只要你有<?php
打开标签,它就会被解析。
这取决于您是否使用include
或require
。随着include
被包含的文件的文本内容被添加到父项,然后整个事情被解析。使用require
首先解析包含的文件,并将其内容提供给运行时,然后处理继续解析包含文件的其余部分。
如果您想确保init文件仅在请求的运行时中加载一次,那么请使用require_once
来确保仅在一次调用它时才会对其进行解析。在任何需要它的常量的地方尝试加载init文件是一个好主意,但使用require_once
可以确保在需要时不会再解析它。
pingw33是正确的 - 'require'和'include'只在失败的严重程度上延迟。 – Guss 2009-09-04 00:24:53
也没有执行文本包含,每个php文件都按原样解析。 – pingw33n 2009-09-04 01:19:21