国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP包含文件函數(shù)include、include_once、require、require_once區(qū)別總結(jié)

2024-09-04 11:43:22
字體:
供稿:網(wǎng)友

include() 、require()語句包含并運(yùn)行指定文件。這兩結(jié)構(gòu)在包含文件上完全一樣,唯一的區(qū)別是對(duì)于錯(cuò)誤的處理。require()語句在遇到包含文件不存在,或是出錯(cuò)的時(shí)候,就停止即行,并報(bào)錯(cuò)。include()則繼續(xù)即行。

例如下面的代碼:

  1. include('hello.php');  
  2. echo 'include test final!';//include報(bào)錯(cuò),但是會(huì)繼續(xù)執(zhí)行,顯示:include test final!  
  3. require('hello.php');  
  4. echo 'require test final!';//require報(bào)錯(cuò),停止代碼的執(zhí)行。 

一句話總結(jié):

1.include() 產(chǎn)生一個(gè)警告

2.require()  則導(dǎo)致一個(gè)致命錯(cuò)誤

換句話說,如果你想在丟失文件時(shí)停止處理頁面,那就別猶豫了,用  require()  吧。include()  就不是這樣,腳本會(huì)繼續(xù)運(yùn)行。同時(shí)也要確認(rèn)設(shè)置了合適的include_path。

就是說再解析程序時(shí)即讀取require的文件,而不是解析后,如果不能讀取到被require的文件,就不能進(jìn)行下一步動(dòng)作。所以,不被正確包含就會(huì)導(dǎo)致程序的文件,用require比較好??赡苄噬弦猜晕⒏唿c(diǎn)。

注意:require() 無論如何都會(huì)包含文件,而include() 可以有選擇地包含:

  1. <?php  
  2.  if(FALSE){  
  3.    require('x.php'); 
  4.  }  
  5.  if(FALSE){  
  6.    include('s.php'); 
  7.  }  
  8. ?> 

上面的代碼中:x.php  一定會(huì)被包含,而  s.php  一定不會(huì)被包含。

二種方式提供不同的使用彈性:

require 的使用方法如 require("MyRequireFile.php"); 。這個(gè)函式通常放在 PHP 程式的最前面,PHP 程式在執(zhí)行前,就會(huì)先讀入 require 所指定引入的檔案,使它變成 PHP 程式網(wǎng)頁的一部份。

include 使用方法如 include("MyIncludeFile.php"); 。這個(gè)函式一般是放在流程控制的處理區(qū)段中。PHP 程式網(wǎng)頁在讀到 include 的檔案時(shí),才將它讀進(jìn)來。這種方式,可以把程式執(zhí)行時(shí)的流程簡(jiǎn)單化。

一、使用語法和簡(jiǎn)介

1、include()

語法:include(/path/to/filename)

include()語句將在其被調(diào)用的位置處包含一個(gè)文件。包含一個(gè)文件與在該語句所在位置復(fù)制制定文件的數(shù)據(jù)具有相同內(nèi)容的效果。

使用include()時(shí)可以忽略括號(hào)。

可以根據(jù)條件來執(zhí)行include()語句。在條件語句中使用include()有個(gè)怪現(xiàn)象,它必須包圍在語句塊大括號(hào)中,或者用其他語句包圍符括起來。

2、include_once()

語法:include_once(filename)

include_once() 語句在腳本執(zhí)行期間包含并運(yùn)行指定文件。此行為和 include() 語句類似,唯一區(qū)別是include_once()會(huì)先判斷一下這個(gè)文件在之前是否已經(jīng)被包含過,如已經(jīng)包含,則忽略本次包含。

include_once() 應(yīng)該用于嵌套包含的情況下,想確保它只被包含一次以避免函數(shù)重定義,變量重新賦值等問題。

小結(jié):include_once()函數(shù)的作用與include相同,不過它會(huì)首先驗(yàn)證是否已經(jīng)包含了該文件。如果已經(jīng)包含,則不再執(zhí)行include_once。否則,則必須包含該文件。除了這一點(diǎn)與include完全相同。

3、require()

語法:require(filename)

require()在很大程度上與include相同,都是將一個(gè)模板文件包含到require調(diào)用坐在的位置。

require和include之間有兩點(diǎn)重要的區(qū)別。首先,無論require的位置如何,制定文件都將包含到出現(xiàn)require的腳本中。例如,即使require放在計(jì)算結(jié)果為假的if語句中,依然會(huì)包含指定文件。

第二個(gè)重要的區(qū)別是:require出錯(cuò)時(shí),腳本將停止運(yùn)行,而在使用include的情況下,腳本將繼續(xù)執(zhí)行。

4、require_once()

語法:require_once(filename)

require_once() 語句在腳本執(zhí)行期間包含并運(yùn)行指定文件。此行為和 require() 語句類似,唯一區(qū)別是require_once()會(huì)先判斷一下這個(gè)文件在之前是否已經(jīng)被包含過,如已經(jīng)包含,則忽略本次包含。

require_once() 應(yīng)該用于嵌套包含的情況下,想確保它只被包含一次以避免函數(shù)重定義,變量重新賦值等問題。

小結(jié):隨著網(wǎng)站越來越大,可能會(huì)出現(xiàn)重復(fù)包含某些文件。這也許不是問題,但又是修改了所包含文件的變量后,卻由于后面再次包含原來的文件而被覆蓋,可能不希望出現(xiàn)這種情況。還可能出現(xiàn)另一個(gè)問題,即所包含文件中函數(shù)名的沖突。使用require_once就可以解決這些問題。

require_once函數(shù)確保文件只包含一次。在遇到require_once后,后面再試圖包含相同的文件時(shí)將被忽略。

二、區(qū)別總結(jié)

1、include()與require()語句區(qū)別。

兩者區(qū)別:這兩種結(jié)構(gòu)除了在如何處理失敗之外完全一樣。

include() 產(chǎn)生一個(gè)警告,腳本會(huì)繼續(xù)運(yùn)行。

require() 則導(dǎo)致一個(gè)致命錯(cuò)誤,腳本會(huì)停止運(yùn)行。

換句話說,如果想在遇到丟失文件或遇到錯(cuò)誤時(shí)停止處理頁面就用 require()。如果想在遇到錯(cuò)誤時(shí)繼續(xù)處理頁面就用 include()。

注意在 PHP 4.3.5 之前,包含文件中的語法錯(cuò)誤不會(huì)導(dǎo)致程序停止,但從此版本之后會(huì)。

2、include_once()、require_once()與include()、require()的區(qū)別

include_once()和require_once()一樣,應(yīng)該用于在腳本執(zhí)行期間同一個(gè)文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數(shù)重定義,變量重新賦值等問題。這就是include_once()和require_once()與include() 和require()的主要區(qū)別。

三、需要注意的問題

1.路徑問題

特別是嵌套包含的時(shí)候,一定得注意包含文件的路徑。

比如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一個(gè)文件夾下,這個(gè)時(shí)候往往很容易出錯(cuò)誤。

解決方案:可以使用 dirname(__FILE__) 語句,這句的意思是獲得當(dāng)前腳本的絕對(duì)路徑。如:require_once(dirname(__FILE__).'/config.php');

2.效率問題

include_once(),require_once(),與include(),require()比較,效率要低一些,因?yàn)樗麄冎辽俚孟扰袛嘁幌逻@個(gè)文件是否已包含。這一問題在PHP5版本有很大改進(jìn),不過效率還是有差別。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 浑源县| 泰顺县| 青海省| 吉林省| 凤阳县| 谷城县| 清水县| 鄂伦春自治旗| 荔波县| 开阳县| 桂东县| 客服| 铜川市| 威信县| 洛宁县| 凉城县| 禄丰县| 奉贤区| 东光县| 津市市| 常山县| 林口县| 筠连县| 和林格尔县| 特克斯县| 永州市| 邹城市| 雷波县| 巴塘县| 广德县| 深水埗区| 甘孜| 华亭县| 通城县| 确山县| 吉木萨尔县| 黑河市| 金坛市| 读书| 沧州市| 白河县|