在本教程中,您將學(xué)習(xí)如何在PHP中包含和評估文件。
使用include() 和 require()語句可以將一個PHP文件中的代碼包含在另一個PHP文件中。包含文件與從指定的文件復(fù)制腳本并將其粘貼到調(diào)用它的位置產(chǎn)生相同的結(jié)果。
您可以節(jié)省大量時間并通過包含文件來工作-只需將代碼塊存儲在單獨的文件中,然后使用include()和require()語句將其包含在任何需要的位置,而不必多次鍵入整個代碼塊。 一個典型的示例是在網(wǎng)站的所有頁面中包含頁眉,頁腳和菜單文件。
include() 和 require()語句的基本語法可以通過以下方式給出:
include("path/to/filename"); 或 include "path/to/filename"; require("path/to/filename"); 或 require "path/to/filename";
提示:與print 和 echo語句一樣,您可以在使用include 和 require語句時省略括號,如上所述。
以下示例將向您展示如何在網(wǎng)站的所有頁面中分別包含分別存儲在單獨的“ header.php”,“ footer.php”和“ menu.php”文件中的通用頁眉,頁腳和菜單代碼。使用此技術(shù),只需更改一個文件即可立即更新網(wǎng)站的所有頁面,從而節(jié)省了大量重復(fù)性工作。
<!DOCTYPE html> <html> <head> <title>菜鳥教程</title> </head> <?php include "header.php"; ?> <?php include "menu.php"; ?> <h1>歡迎瀏覽我們的網(wǎng)站(www.soo66.com)!</h1> <p>在這里,您會發(fā)現(xiàn)很多有用的信息。</p> <?php include "footer.php"; ?> </html>
您可能在想,如果我們可以使用include()語句包含文件,那么我們?yōu)槭裁葱枰猺equire()。通常,require()語句的運(yùn)行方式類似于include()。
唯一的區(qū)別是— include()語句僅生成PHP警告,但如果找不到要包含的文件,則允許腳本繼續(xù)執(zhí)行,而require()語句將生成致命錯誤并停止腳本執(zhí)行 。
<?php require "my_variables.php"; ?> <?php require "my_functions.php"; ?> <!DOCTYPE html> <html> <head> <title><?php displayTitle($home_page); ?></title> </head> <?php include "header.php"; ?> <?php include "menu.php"; ?> <h1>歡迎瀏覽我們的網(wǎng)站(www.soo66.com)!</h1> <p>在這里,您會發(fā)現(xiàn)很多有用的信息。</p> <?php include "footer.php"; ?> </html>
注意:如果包含庫文件或包含運(yùn)行應(yīng)用程序所必需的函數(shù)和配置變量的文件(如數(shù)據(jù)庫配置文件),建議使用 require()語句。
如果不小心在代碼中使用 include 或 require 語句多次包含同一文件(通常是函數(shù)或類文件) ,可能會導(dǎo)致沖突。為了防止這種情況,PHP 提供了 include_once 和 require_once 語句。這些語句的行為方式與 include 和 require 語句相同,只有一個例外:
即使再次包含該文件,include_once和require_once語句也將只包含該文件一次,也就是說,如果指定的文件已包含在前一個語句中,則不會再次包含該文件。為了更好地理解它是如何工作的,我們來看一個示例。 假設(shè)我們有一個“ my_functions.php”文件,其代碼如下:
<?php function multiplySelf($var){ $var *= $var; //將變量自身相乘 echo $var; } ?>
這是PHP腳本,其中包含“ my_functions.php”文件。
<?php //包含文件 require "my_functions.php"; // 調(diào)用函數(shù) multiplySelf(2); // 輸出: 4 echo "<br>"; //再次包含該文件 require "my_functions.php"; // 調(diào)用函數(shù) multiplySelf(5); // Doesn't execute ?>
當(dāng)您運(yùn)行上面的腳本時,您將看到類似以下的錯誤消息:“Fatal error: Cannot redeclare multiplySelf()”。發(fā)生這種情況的原因是'my_functions.php'被兩次包含,這意味著該函數(shù)multiplySelf()被定義了兩次,這導(dǎo)致PHP停止腳本執(zhí)行并生成致命錯誤。現(xiàn)在,用require_once重寫上面的示例。
<?php // Including file require_once "my_functions.php"; // 調(diào)用函數(shù) multiplySelf(2); // 輸出: 4 echo "<br>"; //再次包含該文件 require_once "my_functions.php"; // 調(diào)用函數(shù) multiplySelf(5); // 輸出: 25 ?>
正如您看到的,通過使用require_once代替require,腳本可以按預(yù)期工作。