我包括一個文件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