當前位置:編程學習大全網 - 源碼下載 - require和include的區別

require和include的區別

nclude與require的區別

PHP中的require,require_once,include,include_once的區別

“include”與“required”的作用都是相同的,唯壹不同的是PHP在遇到“include”命令時,它就必須重新解釋壹次。如果在同壹個PHP網頁中出現10次“include”命令時,它便會被重新解釋10次。不過當PHP遇到“require”命令時,不管它在同壹個PHP網頁中出現過幾次,PHP只會解釋壹次而已。

“require”的工作方式是為了讓PHP程序得到更高的效率,所以當它在同壹個PHP網頁中解釋過壹次後,第二次出現便不會再解釋,這是它的優點。不過嚴格來說,這也是它的唯壹 的缺點,因為它不會重復解釋引入的文件,所以當PHP網頁中使用循環或條件語句來引入文件時,“require”則不會做任何的改變。當有類似這樣的情形時,就必須使用“include”命令來引入 文件了。

當PHP遇到壹個利用“include”方式引入的文件,它就會解釋壹次;遇到第二次時,PHP還是會重新解釋壹次。與“require”相比,“include”的執行效率則會下降許多;而且當引入文件中包含了用戶自定義的函數時,PHP在解釋的過程中會發生函數重復定義的問題。不過“include”也不是沒有優點的,因為在PHP網頁中,它會每遇到壹次“include”命令就會重復解釋壹次,所以非常適合使用在循環或條件判斷的語句裏。

“include_once()”函數和“require_once()” 函數功能完全相同,會先檢查目標檔案的內容是不是在之前就已經導入過了,如果是的話,便不會再次重復導入同樣的內容。

現在來說include和require的區別:

require()函數包含進來的內容被當成當前文件的壹個組成部分,所以當包含進來的文件有語法錯誤或者文件不存在的時候,那當前文件的PHP腳本都不再執行. include()函數相當於指定這個文件的路徑,當被包含的文件有錯時,不會影響到本身的程序運行.

include函數可以進行判斷是否包含,而require則是不管任何情況都包含進來.所以這點值得註意!

建議大家在包含動態文件,也就是有變量,函數,已經類的時候用include.不過前段時間有人在分析兩個函數的執行效率.這個我沒自己測試過,等親自測試了再進行補充

www.w3school.com

通過 include() 或 require() 函數,您可以在服務器執行 PHP 文件之前在該文件中插入壹個文件的內容。除了它們處理錯誤的方式不同之外,這兩個函數在其他方面都是相同的。include() 函數會生成壹個警告(但是腳本會繼續執行),而 require() 函數會生成壹個致命錯誤(fatal error)(在錯誤發生後腳本會停止執行)。

詳細介紹

於PHP具有快速、可靠、跨平臺應用、源代碼開放等特點,使得PHP成為最受歡迎的服務器端Script語言之壹。我根據自己在工作中體會到的,向大家介紹PHP使用的心得,希望對大家有所幫助。

利用PHP的Include files維護妳的網站

不管妳所開發的網站的規模是大是小,妳都應該要認識到重復使用程序代碼的重要性,不論妳重復使用的是 PHP 程序或者是 HTML 原始碼。舉個例子來說,網站頁尾的版權宣告至少每年都得修改壹次,如果妳的網站有許多個頁面,該怎麽辦呢?動手壹個壹個修改這些頁面肯定是壹件頭痛的事 情。通過 PHP 我們可以用幾個不同的方式來重復使用程序代碼。要使用哪些函數端視妳要重復使用的是怎樣的內容而定。

這些主要的函數包括:

* include() 與 include_once()

* require() 與 require_once()

1.include() 函數會將指定的檔案讀入並且執行裏面的程序。

例如:include('/home/me/myfile');

被導入的檔案中的程序代碼都會被執行,而且這些程序在執行的時候會擁有和源文件中呼叫到 include() 函數的位置相同的變量範圍(variable scope)。妳可以導入同壹個服務器中的靜態檔案,甚至可以通過合並使用 include() 與 fopen() 函數來導入其它服務器上面的檔案。

2.include_once()函數的作用和 include() 是幾乎相同的

唯壹的差別在於 include_once() 函數會先檢查要導入的檔案是不是已經在該程序中的其它地方被導入過了,如果有的話就不會再次重復導入該檔案(這項功能有時候是很重要的,比方說要導入的檔 案裏面宣告了壹些妳自行定義好的函數,那麽如果在同壹個程序重復導入這個檔案,在第二次導入的時候便會發生錯誤訊息,因為 PHP 不允許相同名稱的函數被重復宣告第二次)。

3.require()函數會將目標檔案的內容讀入,並且把自己本身代換成這些讀入的內容。

這個讀入並且代換的動作是在 PHP 引擎編譯妳的程序代碼的時候發生的,而不是發生在 PHP 引擎開始執行編譯好的程序代碼的時候(PHP 3.0 引擎的工作方式是編譯壹行執行壹行,但是到了 PHP 4.0 就有所改變了,PHP 4.0 是先把整個程序代碼全部編譯完成後,再將這些編譯好的程序代碼壹次執行完畢,在編譯的過程中不會執行任何程序代碼)。require() 通常來導入靜態的內容,而 include() 則適合用來導入動態的程序代碼。

4.如同 include_once()函數,require_once() 函數會先檢查目標檔案的內容是不是在之前就已經導入過了,如果是的話,便不會再次重復導入同樣的內容。

我個人習慣使用 require() 函數來導入版權宣告(copyrights),靜態文字或其它本身不含有變量,

或者本身需要倚賴其它執行過的程序才能正確執行的程序代碼。例如:

<HTML>

<HEAD><TITLE>網頁標題</TITLE></HEAD> <BODY> [壹堆內容] <?

// 導入版權宣告文字

require('/home/me/mycopyright'); ?>

</BODY></HTML>

另壹方面,我通常在程序的開頭使用 include() 函數來導入壹些函式庫或者類似的程序代碼: <?

// 導入我的函式庫

include('/home/me/myfunctions');

// 利用之前導入的函式庫裏面定義好的 PHP 函數執行壹些功能?> <HTML>

<HEAD><TITLE>網頁標題</TITLE></HEAD> <BODY> [壹堆內容] </BODY> </HTML>

接下來妳可能會問這第壹個挺符合邏輯的問題:「這些被導入的檔案要放在哪兒呢?」簡短的答案是:「放在服務器檔案系統裏的任何地方都行。」然而,要留意的 是如果被導入的檔案除了單純的程序代碼片段以外還包含了壹些敏感資料,例如連結數據庫系統要用到的帳號和密碼,那麽建議妳不要把這些檔案放在 Web 服務器的文件根目錄之下,因為那樣的話他人便可以很容易地竊取到這些資料了。

妳可以將這些被包含的檔案放在系統的任何壹個目錄裏面,唯壹的條件是 PHP 本身用來執行的身分(www,nobody 或者其它身分)必須要有足夠的權限能夠讀取這些檔案就可以了。這些檔案的擴展名也可以任意取,甚至沒有附檔名也無所謂。

善用include()和 require()來將網站裏面經常需要變動的***享內容做合理的分割,在更新網站內容的時候將會容易進行得多。

利用PHP來維護檔案系統

PHP 提供了很多與檔案系統相關的函數,讓我們不僅可以開啟檔案,還能夠顯示目錄的內容,搬移檔案的位置以及其它更多功能。有的朋友甚至寫了能夠通過瀏覽器來管理檔案內容的 PHP 程序。

在開始介紹 PHP 的檔案系統相關功能之前,我們要先理清壹件事情:在 Windows操作系統裏

面,檔案路徑可以使用斜線(/)或者反斜線(\)來表示,但是在其它操作系統裏面我們只會使用到斜線。為了保持統壹性,下面的例 子裏面的檔案路徑都是使用斜線。

下面的例子程序我將教大家基本的目錄內容顯示功能,每個步驟都有批註,請直接閱讀。

<? /* $dir_name 這個變量的值是妳想要讀取的目錄的完整路徑 */ $dir_name = "/home/me/";

/* opendir()函數會開啟某個目錄,並且傳回壹個參考值(handle)讓我們可以用來在程序中參照到該目錄 */

$dir = opendir($dir_name);

/* 開始建立壹個字符串,這個字符串包含了 HTML 的列表卷標,用來顯示目錄中的文件名稱。 */

$file_list = "<ul>";

/* 使用壹個 while 循環敘述將前面開啟的目錄中的檔案全部讀取壹遍。如果讀取到的檔名不是「.」或者「..」,就把該檔名寫入前面提到的字符串裏面去。 */ while ($file_name = readdir($dir)) {

if (($file_name != ".") && ($file_name != "..")) { $file_list .= "<li>$file_name"; } }

/* 替 HTML 列表卷標加上結尾 */ $file_list .= "</ul>";

/* 關閉之前開啟的目錄並且結束這段 PHP 程序 */ closedir($dir); ?>

<!-- HTML原始碼從這裏開始 --> <HTML> <HEAD>

</HEAD> <BODY>

<!-- 使用 PHP 程序來將我們所讀取的目錄名稱顯示在頁面上 --> <P>Files in: <? echo "$dir_name"; ?></p>

<!-- 使用 PHP 程序將該目錄中讀取到的文件名顯示在頁面上 --> <? echo "$file_list"; ?> </BODY> </HTML>

經過上面幾步,妳已經成功把某個目錄中的文件名稱顯示在網頁上了。但妳要記住壹點:要讀取某個目錄或者檔案(讀取檔案內容的做法稍後會介紹),PHP 本身執行所用的身分必須至少擁有該目錄或者檔案的讀取權限才行,否則系統會顯示權限不足的錯誤訊息。

下壹個例子我將教大家如何復制壹個檔案:

<? /* 變量$orginal儲存源文件的完整路徑,變量$copied儲存復制過去的新檔案的完整路徑 */ $original = "/home/me/mydatabasedump"; $copied = "/archive/mydatabasedumo_1010";

/* 呼叫 copy() 函數把檔案從原始位置復制壹份到新的位置去。如果無法復制,那麽便終止程序的執行並且顯示錯誤訊息。 */

@copy($original, $copied) or die("無法復制檔案。"); ?>

上面的例子程序可以用來擴充成為壹個檔案備份系統程序。當這個程序執行的時候,它會將數據庫的數據文件復制到其它目錄下面做為備份之用。只要修改系統的排 程檔案內容(crontab),我們便可以讓這個程序自動在每天的固定時間執行壹次,達到系統自動備份,不需要人工手動執行。

如果妳的系統上面有安裝 Lynx 軟件(Lynx 是壹種純文字的 Web 瀏覽器)的話,妳可以在系統排程檔案裏面加入下面這筆記錄來讓系統在固定時間自動激活 Lynx 並且呼叫我們之前寫好的 PHP 備份程序。當 Lynx 呼叫(瀏覽)我們的 PHP 程序的時候,該程序就會被執行,並且產生備份文件。下面這個例子教妳如何在每天早晨五點鐘執行我們的備份程序,並且在執行完以後自動將 Lynx 程序關閉:

來自:閆誌飛166 > 《php》

上壹篇:php 導出excel (html)

下壹篇:Windows版本Apache+php的Xhprof應用——1

轉藏到我的圖書館

獻花(0)

分享到微信

分享:

類似文章

更多

PHP之PHP文件引用詳解

比較require(),include(),require_once(...

php header函數使用要點

include 和 include_once 有什麽分別?r...

十天學會PHP/第六天:PHP日期、引用

PHP中file_exists與is_file,is_dir的區別....

php 刪除目錄下N分鐘前創建的所有文件

過濾危險html代碼的php自定義函數

熱門推廣

猜妳喜歡

最美雪景欣賞——妳那裏下雪了嗎?

廣告營銷如千軍萬馬過獨木橋 成功質...

思鄉最是詩行,給漂泊的遊子

為了不得癌癥,今天就要做

初戀的地方

36種吃得起的抗衰老食物

世界十大神秘"鬼船"有什麽神秘故事

公***基礎知識4000題

老師常用教學網站賬號密碼大集合

沒有掃描儀,怎麽辦?用什麽代替?

發表評論:

您好,請 登錄 或者 註冊 後再進行評論

其它帳號登錄:

最新文章

深入理解php底層:php生命周期

通過virtualbox最小化安裝centos 6.3...

debian下控制臺和VI彩色顯示&ssh

Ubuntu下使用SVN

sources鏡像:sources.list.wheezy.de...

nginx.conf 配置lnmp

更多

熱門文章

沒見過60種花卷的做法吧&別錯過學習的...

“中國式xx”讓全世界哭笑不得

小學英語輔導全套視頻教程珍藏版

我 家 寶 貝 女 兒[5]

從“小壹“至“高三“各年級對孩子...

灌湯包的皮怎麽做又薄又透,能當氣球吹

蜂蜜加肉桂 ---- 令人嘆為觀止的神奇

德國制造和中國制造究竟不同在哪

女人的苦處:寫的非常好——

外媒壹則漫畫揭示中美博弈(很喜感)

白酒鮮姜雲南白藥粉治禿頂脫發效果神奇

人要長生,腸要常清

更多>>

關閉

關閉

  • 上一篇:威盾PHP加密求解密 威盾php解密
  • 下一篇:E時代淒美動人的愛情:我的男友比我小小說txt全集免費下載
  • copyright 2024編程學習大全網