PHP 包含文件
在我們實(shí)際的生產(chǎn)工作中,當(dāng)構(gòu)建一個(gè)較大的系統(tǒng)時(shí),總有一些內(nèi)容是需要重復(fù)使用的, 如一些常用的函數(shù),或者一些公共 html 元素如菜單,頁(yè)腳等。我們可以把這些公共的內(nèi)容集中寫入一些文件內(nèi), 然后再根據(jù)具體情況,在需要的地方包含進(jìn)來,這樣可以節(jié)約大量的開發(fā)時(shí)間,使代碼文件統(tǒng)一簡(jiǎn)練,以利于更好的維護(hù)。
在PHP中, 有require、require_once、include、include- once四種方法包含一個(gè)文件。
函數(shù) ? ? ? ? ? ? ? ?包含失敗 ? ? ? ? ? ? ? ? ? ? ? ??特點(diǎn)
Inlcude ? ? ? ? ? 返回一條警告 ? ? ? ? ? ? ? ? ?文件繼續(xù)向下執(zhí)行。通常用于動(dòng)態(tài)包含 ? ?
Require ? ? ? ? ?一個(gè)致命的錯(cuò) ? ? ? ? ? ? ? ? ?代碼就不會(huì)繼續(xù)向下執(zhí)行。通常包含極為重要的文件,整個(gè)代碼甭想執(zhí)行 ? ?
Include_once ? ?返回一條警告 ? ? ? ? ? ? ? 除了原有include的功能以外,它還會(huì)做once檢測(cè),如果文件曾經(jīng)已經(jīng)被被包含過,不再包含 ? ?
Require_once ? ?一個(gè)致命的錯(cuò) ? ? ? ? ? ? ?除了原的功能一外,會(huì)做一次once檢測(cè),防止文件反復(fù)被包含 ? ?
PHP include 和 require 語句
在 PHP 中,您可以在服務(wù)器執(zhí)行 PHP 文件之前在該文件中插入一個(gè)文件的內(nèi)容。
include 和 require 語句用于在執(zhí)行流中插入寫在其他文件中的有用的代碼。
include 和 require 除了處理錯(cuò)誤的方式不同之外,在其他方面都是相同的:
require 生成一個(gè)致命錯(cuò)誤(E_COMPILE_ERROR),在錯(cuò)誤發(fā)生后腳本會(huì)停止執(zhí)行。
include 生成一個(gè)警告(E_WARNING),在錯(cuò)誤發(fā)生后腳本會(huì)繼續(xù)執(zhí)行。
因此,如果您希望繼續(xù)執(zhí)行,并向用戶輸出結(jié)果,即使包含文件已丟失,那么請(qǐng)使用 include。 否則,在框架、CMS 或者復(fù)雜的 PHP 應(yīng)用程序編程中,請(qǐng)始終使用 require 向執(zhí)行流引用關(guān)鍵文件。 這有助于提高應(yīng)用程序的安全性和完整性,在某個(gè)關(guān)鍵文件意外丟失的情況下。
包含文件省去了大量的工作。這意味著您可以為所有網(wǎng)頁(yè)創(chuàng)建標(biāo)準(zhǔn)頁(yè)頭、頁(yè)腳或者菜單文件。 然后,在頁(yè)頭需要更新時(shí),您只需更新這個(gè)頁(yè)頭包含文件即可。
語法
? ? ? ?include 'filename';
? ? ? ?或者
? ? ? ?require 'filename'; ? ? ? ? ? ?
基礎(chǔ)實(shí)例
假設(shè)您有一個(gè)標(biāo)準(zhǔn)的頁(yè)頭文件,名為 "header.php"。如需在頁(yè)面中引用這個(gè)頁(yè)頭文件,請(qǐng)使用 include/require:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> </head> <body> <?php include 'header.php'; ?> <h1>歡迎來到我的主頁(yè)!</h1> <p>一些文本。</p> </body> </html>
實(shí)例 2
假設(shè)我們有一個(gè)在所有頁(yè)面中使用的標(biāo)準(zhǔn)菜單文件。
"menu.php":
? ? ? ?echo '<a href="/">主頁(yè)</a>
? ? ? ?<a href="/html">HTML 教程</a>
? ? ? ?<a href="/php">PHP 教程</a>'; ? ? ? ?
網(wǎng)站中的所有頁(yè)面均應(yīng)引用該菜單文件。以下是具體的做法:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> </head> <body> <div class="leftmenu"> <?php include 'menu.php'; ?> </div> <h1>歡迎來到我的主頁(yè)!</h1> <p>一些文本。</p> </body> </html>
實(shí)例 3
假設(shè)我們有一個(gè)定義變量的包含文件("vars.php"):
<?php $color='red'; $car='BMW'; ?>
這些變量可用在調(diào)用文件中:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng)(php.cn)</title> </head> <body> <h1>歡迎來到我的主頁(yè)!</h1> <?php include 'vars.php'; echo "I have a $color $car"; // 輸出 I have a red BMW ?> </body> </html>
實(shí)例 4
創(chuàng)建一個(gè)file.php文件:
<?php $word = "你好!"; ?>
然后在另外的文件如 test.php 中包含它(兩個(gè)文件在同一目錄):
<?php echo "包含內(nèi)容為:".$word."<br />"; include("file.php"); echo "包含內(nèi)容為:".$word; ?>
運(yùn)行 test.php 輸出如下:
包含內(nèi)容為:
包含內(nèi)容為:你好! ? ? ? ?
include() 與 require() 的區(qū)別
require() 語句也可用于文件的包含,在使用上等同于 include() 。 但二者也有一些細(xì)微差別,可以視實(shí)際情況采用 include() 還是 require() 。
二者區(qū)別如下:
當(dāng)包含的文件不存在時(shí)(包含發(fā)生錯(cuò)誤),如果使用 require() ,則程序立刻停止執(zhí)行, 而使用 include() 的話,系統(tǒng)除了提示錯(cuò)誤外,下面的程序內(nèi)容還會(huì)繼續(xù)執(zhí)行。 大多情況下推薦使用 require() 函數(shù),以避免在錯(cuò)誤引用發(fā)生后的程序繼續(xù)執(zhí)行
不管 require() 語句是否執(zhí)行,程序執(zhí)行包含文件都被加入進(jìn)來, include() 只有執(zhí)行的時(shí)候文件才會(huì)被包含。所以如果是有條件判斷的情況下,用 include() 顯然更合適
使用 require() 多次引用時(shí),只執(zhí)行一次對(duì)被引用文件的引用動(dòng)作,而 include() 則每次都要進(jìn)行讀取和評(píng)估后引用文件
once
include和require分別對(duì)應(yīng)了一個(gè)once函數(shù):include_once?和?require_once
函數(shù)的功能沒有什么差異,主要的作用是避免重復(fù)包含