php裡的include作用是包含並運行指定文件,被包含文件先按參數給出的路徑尋找,如果沒有給出目錄時則按照include_path指定的目錄尋找,其使用示例如“include 'vars.php';」。
本文操作環境:Windows7系統,PHP7.1版,Dell G3電腦。
php裡include作用是什麼?
include (PHP 4, PHP 5, PHP 7, PHP 8)
#include 表達式包含並執行指定檔案。
以下文件也適用於 require
。
被包含檔案先依參數給定的路徑尋找,如果沒有給目錄(只有檔案名稱)時則依照 include_path 指定的目錄尋找。如果在 include_path 下找不到該檔案則 include 最後才在呼叫腳本檔案所在的目錄和目前工作目錄下尋找。如果最後仍未找到檔案則 include 結構會發出一條 E_WARNING ;這一點和 require 不同,後者會發出一個 E_ERROR 。
注意如果檔案無法訪問, include 和 require 在分別發出最後的 E_WARNING 或 E_ERROR 之前,都會發出額外一條 E_WARNING。
如果定義了路徑-不管是絕對路徑(在Windows 下以磁碟機或\ 開頭,在Unix/Linux 下以/ 開頭)還是目前目錄的相對路徑(以. 或.. 開頭) ——include_path 都會被完全忽略。例如一個檔案以 ../ 開頭,則解析器會在目前目錄的父目錄下尋找該檔案。
有關 PHP 如何處理包含文件和包含路徑的更多資訊請參閱 include_path 部分的文件。
當一個檔案被包含時,其中所包含的程式碼繼承了 include 所在行的變數範圍。從該處開始,呼叫檔案在該行處可用的任何變數在被呼叫的檔案中也都可用。不過所有在包含檔案中定義的函數和類別都具有全域作用域。
範例#1 基本的include 範例
vars.php
<?php $color = 'green'; $fruit = 'apple'; ?>
test.php
<?php echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple ?>
如果include 出現於呼叫文件中的一個函數裡,則被呼叫的檔案中所包含的所有程式碼將表現得如同它們是在該函數內部定義的一樣。所以它將遵循該函數的變數範圍。此規則的一個例外是魔術常數,它們是在發生包含之前就已被解析器處理的。
範例#2 函數中的包含
<?php function foo() { global $color; include 'vars.php'; echo "A $color $fruit"; } /* vars.php 在 foo() 范围内,所以 $fruit 在范围为不可用。 * * $color 能用是因为声明成全局变量。 */ foo(); // A green apple echo "A $color $fruit"; // A green ?>
當一個檔案被包含時,語法解析器在目標檔案的開頭脫離PHP 模式並進入HTML 模式,到文件結尾處恢復。由於此原因,目標檔案中需要作為 PHP 程式碼執行的任何程式碼都必須被納入有效的 PHP 起始和結束標記之中。
如果「URL include wrappers」在PHP 中被激活,可以用URL(透過HTTP 或其它支援的封裝協定-請參閱支援的協定和封裝協定)而不是本機檔案來指定要被包含的文件。如果目標伺服器將目標檔案作為 PHP 程式碼解釋,則可以用適用於 HTTP GET 的 URL 請求字串來傳遞變數至被包含的檔案。嚴格的說這和包含一個文件並繼承父文件的變數空間並不是一回事;該腳本文件實際上已經在遠端伺服器上運行了,而本地腳本則包括了其結果。
範例#3 透過HTTP 進行的include
<?php /* 这个示例假定 www.example.com 配置为解析 .php 文件而不解析 .txt 文件。 * * 此外 “Works” 意味着 $foo 和 $bar 变量在包含的文件中是可用的。 */ // 无法执行; file.txt 没有被 www.example.com 当作 PHP 处理。 include 'http://www.example.com/file.txt?foo=1&bar=2'; // 无法执行;在本地文件系统中查找名为 “file.php?foo=1&bar=2” 的文件。 include 'file.php?foo=1&bar=2'; // 正常。 include 'http://www.example.com/file.php?foo=1&bar=2'; ?>
警告
遠端檔案可能會經過遠端伺服器處理(根據檔案後綴以及遠端伺服器是否正在執行PHP 而定),但必須產生一個合法的PHP 腳本,因為其將由本機伺服器處理。如果來自遠端伺服器的檔案應該在遠端運行而只輸出結果,那麼用 readfile() 函數會更好。另外也要格外小心以確保遠端的腳本產生合法並且是所需的程式碼。
推薦學習:《PHP影片教學》
以上是php裡include作用是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!