中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

require與require_once有什么不同

發布時間:2021-02-13 12:59:24 來源:億速云 閱讀:164 作者:Leah 欄目:開發技術

require與require_once有什么不同?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

利用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 程序關閉:
0 5 * * * [username] lynx -dump http://localhost/copyfile.php 1>/dev/null 2>&1
如果你的系統安裝的是 CGI 版本的 PHP,那么你可以直接呼叫 PHP 執行檔而不需要通過 Lynx 來呼叫我們的 PHP 程序
php中include和require有什么區別
平常是沒區別的.
當要加載的文件不存在時候, include會給一個warning警告, 然后繼續運行. 而require則會給一個fatal error, 直接結束腳本
=====================================================
php手冊里面是這樣說的:
require() 和 include() 除了怎樣處理失敗之外在各方面都完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果想在丟失文件時停止處理頁面,那就別猶豫了,用 require() 吧。include() 就不是這樣,腳本會繼續運行。

關于require與require_once有什么不同問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石楼县| 中江县| 德令哈市| 射阳县| 闽清县| 红桥区| 泗水县| 平遥县| 彰化市| 庆城县| 都江堰市| 泾源县| 平度市| 黄龙县| 寿阳县| 卢氏县| 赤城县| 诸城市| 滦平县| 凤城市| 梅州市| 阳江市| 济宁市| 封丘县| 丹江口市| 茂名市| 德清县| 潜江市| 贵溪市| 正镶白旗| 东光县| 乐昌市| 巴东县| 娄烦县| 迭部县| 澄迈县| 都江堰市| 富裕县| 汤原县| 且末县| 太保市|