[PHP]include詳解_PHP教程

來源:互聯網
上載者:User
include負載檔案順序
尋找包含檔案的順序是:

首先在當前工作目錄的相對的 include_path 下尋找,
然後是當前運行指令碼所在目錄相對的 include_path 下尋找。
例如 include_path 是 .,當前工作目錄是 /includetest/,指令碼中要 include 一個 includetest/a.php 並且在該檔案中有一句 include “b.php”,則尋找 b.php 的順序先是 /includetest/,然後是 /includetest/include/。如果檔案名稱以 ./ 或者 ../ 開始,則只在當前工作目錄相對的 include_path 下尋找。

代碼結構如下:

~/public_html/includetest> ls -R
.:
a.php b.php include

./include:
a.php b.php其中各檔案代碼為:

~/public_html/includetest> cat a.php

set_include_path(".");
include "include/a.php";

echo __FILE__ . PHP_EOL;
~/public_html/includetest> cat b.php

echo __FILE__ . PHP_EOL;
~/public_html/includetest> cat include/a.php

include "b.php";
echo __FILE__ . PHP_EOL;
~/public_html/includetest> cat include/b.php

echo __FILE__ . PHP_EOL;輸出結果為:

~/public_html/includetest> php a.php
# 可以看到include/a.php中include "b.php";會先載入includetest/b.php檔案
/home/zhanhailiang/public_html/includetest/b.php
/home/zhanhailiang/public_html/includetest/include/a.php
/home/zhanhailiang/public_html/includetest/a.php注意:工作目錄與運行指令碼所在目錄的概念區別。

include變數範圍
當一個檔案被包含時,其中所包含的代碼繼承了 include 所在行的變數範圍。從該處開始,調用檔案在該行處可用的任何變數在被調用的檔案中也都可用。不過所有在包含檔案中定義的函數和類都具有全域範圍。

代碼如下:

~/public_html/includetest> cat c.php

include "d.php";
echo $d.PHP_EOL;
e();
~/public_html/includetest> cat d.php

$d = "hello world";

function e() {
echo "hello world, e()".PHP_EOL;
}
~/public_html/includetest> php c.php
hello world
hello world, e()相應地,如果 include 出現於調用檔案中的一個函數裡,則被調用的檔案中所包含的所有代碼將表現得如同它們是在該函數內部定義的一樣。所以它將遵循該函數的變數範圍。 An exception to this rule are magic constants which are evaluated by the parser before the include occurs.

include代碼執行
當一個檔案被包含時,文法解析器在目標檔案的開頭脫離 PHP 模式並進入 HTML 模式,到檔案結尾處恢複。由於此原因,目標檔案中應被當作 PHP代碼執行的任何代碼都必須被包括在有效 PHP 起始和結束標記之中。

include處理遠程檔案
如果“URL fopen wrappers”在 PHP 中被啟用(預設配置),可以用 URL(通過 HTTP 或者其它支援的封裝協議——所支援的協議見支援的協議和封裝協議)而不是本地檔案來指定要被包含的檔案。如果目標伺服器將目標檔案作為 PHP 代碼解釋,則可以用適用於 HTTP GET 的 URL 請求字串來向被包括的檔案傳遞變數。嚴格的說這和包含一個檔案並繼承父檔案的變數空間並不是一回事;該指令檔實際上已經在遠程伺服器上運行了,而本地指令碼則包括了其結果。

include處理傳回值
處理傳回值:可以在被包括的檔案中使用 return 語句來終止該檔案中程式的執行並返回調用它的指令碼。同樣也可以從被包含的檔案中傳回值。可以像普通函數一樣獲得 include 調用的傳回值。不過這在包含遠程檔案時卻不行,除非遠程檔案的輸出具有合法的 PHP 開始和結束標記(如同任何本地檔案一樣)。可以在標記內定義所需的變數,該變數在檔案被包含的位置之後就可用了。

因為 include 是一個特殊的語言結構,其參數不需要括弧。在比較其傳回值時要注意。

如果檔案不能被包含,則返回 FALSE 並發出一個 E_WARNING 警告。

如果在包含檔案中定義有函數,這些函數可以獨立於是否在 return 之前還是之後在主檔案中使用。如果檔案被包含兩次,PHP 5 發出致命錯誤因為函數已經被定義,但是 PHP 在 return 之後不會抱怨函數已定義。推薦使用 include_once 而不是檢查檔案是否已包含並在包含檔案中有條件返回。

另一個將 PHP 檔案“包含”到一個變數中的方法是用輸出控制函數結合 include 來捕獲其輸出。

http://www.bkjia.com/PHPjc/477600.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477600.htmlTechArticleinclude負載檔案順序 尋找包含檔案的順序是: 首先在當前工作目錄的相對的 include_path 下尋找, 然後是當前運行指令碼所在目錄相對的 inclu...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.