<%@include %>;指命將會在JSP編譯時插入一個包含文本或代碼的檔案,當你使用<%@ include %>;指命時,這個包含的過程就當是靜態的。靜態的包含就是指這個被包含的檔案將會被插入到JSP檔案中去,這個包含的檔案可以是JSP檔案,HTML檔案,文本檔案。如果包含的是JSP檔案,這個包含的JSP的檔案中代碼將會被執行。
如果你僅僅只是用include 來包含一個靜態檔案。那么這個包含的檔案所執行的結果將會插入到JSP檔案中放<% @ include %>;的地方。一旦包含檔案被執行,那么主JSP檔案的過程將會被恢復,繼續執行下一行.
當一個檔案被包含時,其中所包含的代碼繼承了 include 所在行的變數範圍。從該處開始,調用檔案在該行處可用的任何變數在被調用的檔案中也都可用。不過所有在包含檔案中定義的函式和類都具有全局作用域。
例子 16-5. 基本的include()例子
vars.php<?php$color = 'green';$fruit = 'apple';?>test.php<?phpecho "A $color $fruit"; // Ainclude 'vars.php';echo "A $color $fruit"; // A green apple?> 如果 include 出現於調用檔案中的一個函數裡,則被調用的檔案中所包含的所有代碼將表現得如同它們是在該函式內部定義的一樣。所以它將遵循該函式的變數範圍。
例子 16-6. 函式中的包含
<?phpfunction foo(){ global $color; include 'vars.php'; echo "A $color $fruit";}/* vars.php is in the scope of foo() so * * $fruit is NOT available outside of this * * scope. $color is because we declared it * * as global. */foo(); // A green appleecho "A $color $fruit"; // A green?>例子 16-7. 通過 HTTP 進行的include()
<?php/* This example assumes that is configured to parse .php * * files and not .txt files. Also, 'Works' here means that the variables * * $foo and $bar are available within the included file. */// Won't work; file.txt wasn't handled by as phpinclude '/file.txt?foo=1&bar=2';// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the// local filesystem.include 'file.php?foo=1&bar=2';// Works.include '/file.php?foo=1&bar=2';$foo = 1;$bar = 2;include 'file.txt'; // Works.include 'file.php'; // Works.?>相關信息參見使用遠程檔案,fopen()和file()。
<?php// This is WRONG and will not work as desired.if ($condition) include $file;else include $other;// This is CORRECT.if ($condition) { include $file;} else { include $other;}?>處理返回值:可以在被包括的檔案中使用return()語句來終止該檔案中程式的執行並返回調用它的腳本。同樣也可以從被包含的檔案中返回值。可以像普通函式一樣獲得 include 調用的返回值。不過這在包含遠程檔案時卻不行,除非遠程檔案的輸出具有合法的 php 開始和結束標記(如同任何本地檔案一樣)。可以在標記內定義所需的變數,該變數在檔案被包含的位置之後就可用了。